Scripting – Wie trenne ich Remotedesktopsitzungen?

Scripting – Wie trenne ich Remotedesktopsitzungen?

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 /smParameter „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:

http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2010/02/22/psterminalservices-powershell-module-for-terminal-services.aspx

Get-TSSession -ComputerName server1 -State Active | Disconnect-TSSession -WhatIf

verwandte Informationen