Wie können wir helfen?
Powershell: alle Benutzer am Terminalserver abmelden
Um alle Benutzer mit nur wenig Aufwand von einem Terminalserver abmelden zu können, nutzen wir ein kleines Powershell Script mit dem Befehl quser
quser Powershell Befehl
PS C:\> quser
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
foo 7 Disc 1:23 23.10.2019 09:12
>bar rdp-tcp#114 12 Active . 23.10.2019 10:12
baz rdp-tcp#112 13 Active . 23.10.2019 10:13
Umso mehr Benutzer am Terminalserver angemeldet sind, desto länger ist diese Liste.
Wichtig: beim Skript lesen wir die ID vom Ende der Zeile mit ($_ -split ' +')[-5]
, da manchmal kein Sessionname (wenn von vorne indexiert wird) vorhanden ist.
Fertiges Powershell Skript um Benutzer am Terminalserver abmelden zu können
Aufbau des Skripts:
quser
Befehl- mit
-Skip
erste Zeile überspringen - Loop
ForEach-Object
- Jede Zeile mit
-split
in einzelne Bereiche teilen und das 5. letzte Element in$id
speichern - mit dem Befehl
logoff $id
den Benutzer abmelden.
quser | Select-Object -Skip 1 | ForEach-Object {
$id = ($_ -split ' +')[-5]
logoff $id
}
Alternativ kann mit qwinsta
anstatt quser
das gleiche Ergebnis erzielt werden. Wichtig dabei ist, den listener
sowie die services
(eventuell auch console
) Sitzungen herauszufiltern. Diese dürfen nicht beim Beenden von Sitzungen mit inkludiert sein.