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.) zum Anzeigen der aktiven Sitzungen, aber ich sehe nicht, wie ich die Informationen einfach verwenden kann (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
Antworten:
Sie können versuchen, den undokumentierten
/sm
Parameter fürquery session
(in einer Batchdatei) zu verwenden, um die Dinge einfacher zu sortieren:quelle
Ja, mit tsdiscon über eine Befehlszeile:
Dabei sollte das n durch die Sitzungs-ID ersetzt werden.
Sie können die Sitzungsnummer von erhalten
Da Sie sagen, dass Sie alle Sitzungen auf dem lokalen Computer schließen möchten, müssen Sie in der Reihenfolge, in der Sie dies tun, vorsichtig sein (dh Ihre Sitzung zuletzt schließen).
quelle
Vielleicht möchten Sie sich Powershell Community Extensions ansehen. Es enthält Cmdlets zum Abrufen, Stoppen und Trennen von TerminalSession.
quelle
Mit dem Dienstprogramm tsdiscon können Sie Sitzungen trennen. Wenn Sie den Befehl "Abfragesitzungen" an einer Eingabeaufforderung verwenden, können Sie die Liste der IDs anzeigen und dann für jede ID einen Befehl disdiscon ausgeben.
Ein solches Schleifenkonstrukt sollte funktionieren
wo q.bat ist
Dadurch werden nur Remotesitzungen getrennt und der Konsolenbenutzer ignoriert.
quelle
Sie können lokale oder Remote-Sitzungen mit tsdiscon trennen.
quelle
Ich habe festgestellt, dass TSDISCON "Disc" -verbundene Sitzungen nicht entfernt.
Ich habe TSDISCON durch Abmelden ersetzt.
quelle
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
quelle
Ich weiß, dass das OP jetzt ziemlich alt ist, aber dies sollte das tun, wonach Sie suchen (und falls noch jemand nach etwas sucht, um dasselbe zu tun, dachte ich, ich würde trotzdem antworten).
Ebenso könnten Sie
query/reset session
anstelle vonq/rwinsta
...quelle
FOR /F %A IN (c:\scripts\ps\computers.txt) DO (FOR /f "tokens=2" %i IN ('qwinsta /SERVER:%A ^| find /i "disc"') **DO if "%i" NEQ "0" ECHO %i** | rwinsta %i /SERVER:%A /V)
quelle
Mit dem Befehl TSDiscon werden RDP-Sitzungen (Terminal Services) getrennt. Bei alleiniger Verwendung wird die Verbindung zur aktuellen Sitzung getrennt. Sie können die Sitzungs-ID der Sitzung angeben, von der Sie die Verbindung trennen möchten. Sie können auch den Servernamen angeben, von dem die Verbindung getrennt werden soll.
Ausführliche Informationen finden Sie hier .
quelle
Sie haben nicht angegeben, ob Sie dies tun möchten, ohne den Computer herunterzufahren oder neu zu starten. Aber wenn Ihnen ein Neustart oder Herunterfahren nichts ausmacht, können Sie einfach anrufen:
Dies erzwingt tatsächlich einen Neustart des Computers.
quelle
Auch wenn die Frage sehr alt ist, gibt es kaum Lösungen für alle Versionen ohne qwinsta / query / tsdiscon, nämlich für alle Windows-Heimversionen.
Es gibt jedoch eine einfache Powershell-Version, um eine Sitzung zu trennen:
Eine Sitzungs-ID kann zB mit erhalten werden
getProcesss
. Um eine Sitzung zu trennen (nicht abzumelden!), Verwenden Sie$tstType::DisconnectSession("localhost", 2)
.quelle