Wie kann ich die aktuelle Benutzersitzungs-ID über die Windows-Befehlszeile abrufen?
In der Jobliste unter der Registerkarte Benutzer ist jedem Benutzer eine Sitzungs-ID zugeordnet. Ich möchte dies über die Befehlszeile abrufen, damit ich es für eine Remoteanwendung verwenden kann.
windows
command-line
Negativ
quelle
quelle
Antworten:
Dies ist sicherlich nicht der effizienteste Weg, aber Sie können sich die Ergebnisse von anschauen
tasklist
. Es zeigt den Namen und die Sitzungsnummer jedes ausgeführten Prozesses an. Wenn Sie lokal angemeldet sind, überprüfen Sie die ID der Sitzung mit dem Namen "console".Bearbeiten :
Query Session
ruft die Sitzungs-ID ab:quelle
tasklist
ist gut, weil es keine Pro / Ent OS-Version erfordert. Sie können auch nur interaktive Sitzungentasklist /fi "imagename eq explorer.exe"
quelle
tasklist
gleichzeitig ausgeführt werden.Dies kombiniert Aspekte von Gary Antwort und Oscar Antwort . Wie Gary bemerkte,
query session
sieht die Ausgabe von ungefähr so ausoder, in meinem Fall (mit "Benutzer wechseln")
(Ich habe kein RDP eingerichtet, daher kann ich es nicht testen.) Vermutlich besteht die Absicht der Frage darin, die ID der derzeit aktiven Sitzung zu ermitteln. Ich schlage vor, die Ausgabe von
query session
nach der aktuellen Sitzung zu durchsuchen :auf deren Grundlage das 2., 3. und 4. Wort (was wir hoffen , dass die NUTZERNAME zu sein, [SESSION] ID und STATE) aus jeder Zeile der Ausgabe von
query session
auf%a
,%b
und%c
ist, und dann meldet Sitzungs - ID aus der Zeile , in der USERNAME bin ich und STATE istActive
.Es stellt sich heraus, dass
query session
einusername
Parameter benötigt wird, sodass das oben Gesagte vereinfacht werden kannoder
Um dies in einem Skript (Batch-Datei) zu verwenden, möchten Sie vielleicht sagen
Verwenden von
%%a
und%%b
(anstelle von%a
und%b
), weil es in einem Skript enthalten ist. Sie können das wahrscheinlich weglassen,@
wenn sich die gesamte Batch-Datei darunter befindet@echo off
. Die Initialisierung,unknown
mit der Sie die Fehlerbehandlung durchführen können (Ermitteln, ob in der Ausgabequery session
dieser Übereinstimmungen keine Zeile vorhanden ist ). Die Erweiterung der Fehlerbehandlung, um zu erkennen und zu reagieren, ob die Ausgabe von mehrere übereinstimmende Zeilen enthält,query session
bleibt als Übung übrig.quelle
Im Gegensatz zum Sitzungsnamen wird die Sitzungs-ID nicht in einer Variablen gespeichert und ist nicht so einfach zu erreichen. Ich bin mir sicher, dass es eines gibt, aber ich kann mir kein eingebautes Kommandozeilen-Tool vorstellen, das dies tut.
Ich habe jedoch eine winzige EXE-Datei (C #, .Net 4) geschrieben, die dies ausführt.
Es wird sowohl die Sitzungs-ID als auch den Rückkehrcode anzeigen, sodass Sie diese in einer Vielzahl von Skripten / Techniken verwenden können.
Link zur Datei auf MediaFire
quelle
Dies basiert auf dem Code von Oscar Beh.
tasklist
Zeigt die Sitzungs-ID (und andere Informationen) für alle Instanzen einer bestimmten ausführbaren Datei an, einschließlich der eigenen. Während Sie den Befehl ausführen, wird Ihre Sitzungs-ID angezeigt. Der einzige mögliche Fehler in seinem Code besteht darin, dass er Sie nicht darüber informiert, ob mehrere Instanzen des Programms vorhanden sind, was dazu führen kann, dass das Skript falsche Ergebnisse zurückgibt.Hier werden alle Instanzen von gemeldet,
tasklist
um sicherzustellen, dass dieser Befehl nicht in einer anderen Sitzung ausgeführt wird:Wenn zwei Sitzungs-IDs gemeldet werden, führen Sie das Skript erneut aus.
quelle