Wie können wir helfen?

Kategorien
Inhalt

Powershell: alle Benutzer am Terminalserver abmelden

Navigation:
< zurück

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:

  1. quser Befehl
  2. mit -Skip erste Zeile überspringen
  3. Loop ForEach-Object
  4. Jede Zeile mit -split in einzelne Bereiche teilen und das 5. letzte Element in $id speichern
  5. 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.

Kommentar absenden

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert