Jak mogę pobrać bieżący identyfikator sesji użytkownika za pomocą wiersza poleceń systemu Windows?
Na liście zadań w zakładce Użytkownicy każdy użytkownik jest powiązany z identyfikatorem sesji. Chcę to pobrać za pomocą wiersza polecenia, aby móc używać go do aplikacji zdalnej.
windows
command-line
Negatywny
źródło
źródło
Odpowiedzi:
Z pewnością nie jest to najbardziej efektywny sposób, ale możesz spojrzeć na wyniki
tasklist
. Wyświetli nazwę i numer sesji każdego uruchomionego procesu. Jeśli jesteś zalogowany lokalnie, spójrz na identyfikator sesji o nazwie „konsola”.Edytuj :
Query Session
pobierze identyfikator sesji:źródło
tasklist
jest dobry, ponieważ nie wymaga wersji Pro / Ent OS. Możesz także wyświetlić listę tylko interaktywnych sesji, filtrując dla explorer.exe -tasklist /fi "imagename eq explorer.exe"
źródło
tasklist
jednocześnie.To łączy aspekty odpowiedzi Gary'ego i odpowiedzi Oscara . Jak zauważył Gary, produkcja
query session
wygląda podobnielub, w moim przypadku (używając „Przełącz użytkownika”)
(Nie mam skonfigurowanego protokołu RDP, więc nie mogę go przetestować.) Prawdopodobnie celem tego pytania jest określenie identyfikatora aktualnie aktywnej sesji. Sugeruję przeszukanie danych wyjściowych
query session
czegoś, co wygląda jak bieżąca sesja:który przypisuje 2, 3 i 4 słowa (które mamy nadzieję, że nazwa użytkownika [SESJA] ID i stan) z każdej linii wyjścia
query session
do%a
,%b
i%c
, odpowiednio, a następnie informuje Session ID z linii, gdzie USERNAME to ja, a STATE toActive
.Okazuje się, że
query session
wymagausername
parametru, więc powyższe można uprościćlub
Aby użyć tego w skrypcie (plik wsadowy), możesz powiedzieć
używając
%%a
i%%b
(zamiast%a
i%b
), ponieważ jest w skrypcie. Prawdopodobnie możesz pominąć,@
jeśli cały plik wsadowy jest poniżej@echo off
. Inicjalizacja dounknown
pozwala na obsługę błędów (wykrywanie, czy nie ma linii na wyjściuquery session
tego dopasowania). Rozszerzenie obsługi błędów w celu rozpoznawania i reagowania, jeśli na wyjściu jest wiele pasujących linii,query session
pozostawia się jako ćwiczenie.źródło
W przeciwieństwie do nazwy sesji, identyfikator sesji nie jest przechowywany w zmiennej i nie jest tak łatwo dostępny. Jestem pewien, że istnieje, ale nie mogę wymyślić wbudowanego narzędzia wiersza poleceń, które to robi.
Jednak napisałem mały plik .exe (C #, .Net 4), który to robi.
Wyświetli zarówno identyfikator sesji, jak i kod powrotu, dzięki czemu można go używać w różnych skryptach / technikach.
Link do pliku w MediaFire
źródło
Jest to oparte na kodzie Oscara Beh.
tasklist
pokaże raport ID sesji (i inne informacje) dla wszystkich instancji danego pliku wykonywalnego, w tym dla niego samego. Gdy uruchomisz polecenie, wyświetli się identyfikator sesji. Jedyną potencjalną wadą jego kodu jest to, że nie informuje cię, jeśli istnieje wiele instancji programu, co może spowodować, że skrypt zwróci nieprawidłowe wyniki.Tutaj zgłaszamy wszystkie przypadki,
tasklist
aby upewnić się, że nie ma innej sesji z tym poleceniem:Jeśli zobaczysz zgłoszenie dwóch identyfikatorów sesji, uruchom skrypt ponownie.
źródło