Ich suche nach einer Möglichkeit, alle aktiven Remotedesktopsitzungen auf einem Computer (lokaler Computer) zu schließen. Windows enthält einige Befehle (rwinsta, qwinsta usw.), um die aktiven Sitzungen anzuzeigen, aber ich sehe nicht, wie ich die Informationen einfach verwenden könnte (es sei denn, ich analysiere die Zeichenfolge ...), um alle Sitzungen zu schließen.
Gibt es in Powershell (oder C#, Batch) eine Möglichkeit, alle Remotedesktopsitzungen auf einem lokalen Computer zu schließen?
Danke, Martin
Antwort1
Sie könnten versuchen, den nicht dokumentierten /sm
Parameter „for“ query session
(in einer Batchdatei) zu verwenden, um die Sortierung zu vereinfachen:
FOR /f %%G IN ('query session /sm') DO tsdiscon %%G
Antwort2
Ja, mit tsdiscon von einer Befehlszeile aus:
tsdiscon n
wobei das „n“ durch die Sitzungs-ID ersetzt werden sollte.
Die Sitzungsnummer erhalten Sie unter
query session
Da Sie sagen, Sie wollen schließenalleWenn Sie Sitzungen auf dem lokalen Computer ausführen, müssen Sie vermutlich auf die Reihenfolge achten, in der Sie dies tun (d. h. Ihre Sitzung zuletzt schließen).
Antwort3
Du kannst den ... benutzenAbonnierenDienstprogramm zum Trennen von Sitzungen. Wenn Sie den Befehl „Query Sessions“ in einer Eingabeaufforderung verwenden, können Sie die Liste der IDs anzeigen und dann für jede ID den Befehl tsdiscon ausführen.
Eine Schleifenkonstruktion wie diese sollte funktionieren
FOR /f %%G IN ('q.bat') DO tsdiscon %%G
wo q.bat ist
query session /sm | find "Active"
Dadurch werden nur die Remotesitzungen getrennt und der Konsolenbenutzer ignoriert.
Antwort4
Sie können das PowerShell-Modul PSTerminalServices verwenden:
Get-TSSession -ComputerName server1 -State Active | Disconnect-TSSession -WhatIf