Verwenden Sie ein PowerShell-Skript, um die Abmeldung einer RDP-Sitzung zu erzwingen

Es ist kein neues Problem: Ein Endbenutzer meldet sich mit dem Remotedesktopprotokoll bei einem Windows-Server an und vergisst dann …

abmelden. Wenn eine Sitzung geöffnet bleibt, werden weiterhin unnötig Ressourcen auf dem Server verbraucht. Es gibt ein PowerShell-Skript, mit dem Sie Endbenutzer zwingen können, sich abzumelden und diese Ressourcen freizugeben.
So starten Sie eine erzwungene Abmeldung eines Benutzers Remotedesktopprotokoll (RDP) -Sitzung muss ein Administrator zuerst alle abfragen Remotedesktopdienste (RDS) Serversitzungen auf dem Computer und überprüfen Sie deren Status. Nachdem alle nicht verbundenen Dienste erkannt wurden, ist der nächste Schritt das Abmelden erzwingen.
Laden Sie das kostenlose PowerShell-Modul namens herunter PSTerminalServices und stellen Sie sicher, dass es in Ihrer PowerShell verfügbar ist. Alle Installationsanweisungen finden Sie auf der PSTerminalServices-Site.
Der erste Schritt, den ich mit diesem Modul machen werde, besteht darin, zu prüfen, ob ich alle aktiven Sitzungen auf meinem Laborserver – HYPERV – abrufen kann (Abbildung 1).

Get-TSSession -ComputerName HYPERV
Get-TSSession -ComputerName HYPERV

Derzeit habe ich nur ein paar Sitzungen in einem nicht verbundenen Zustand. Ich sehe also alle Sitzungen, aber ich möchte nur diejenigen sehen, die nicht verbunden sind. Dazu füge ich den Parameter State hinzu (Abbildung 2).

Get-TSSession -ComputerName HYPERV -State Disconnected
Get-TSSession -ComputerName HYPERV -State Disconnected

Dies ist hilfreich, aber es gibt immer noch ein Problem. Sitzung 0 ist keine RDP-Sitzungund es gibt keine Möglichkeit, dies mit Get-TSSession aus dem Ergebnis zu entfernen. Ich werde Where-Object verwenden, um diese Sitzung ebenfalls zu entfernen (Abbildung 3).

Get-TSSession -ComputerName HYPERV -State Disconnected |  Dabei gilt: {$ _. SessionID -ne 0}
Get-TSSession -ComputerName HYPERV -State Disconnected | Dabei gilt: {$ _. SessionID -ne 0}

Jetzt kann ich alle Sitzungen anzeigen, die ich beenden möchte. Als nächstes muss ich nur diese Sitzungen beenden. Zu diesem Zweck verfügt das PSTerminalServices-Modul über ein Stop-TSSession-Cmdlet. Dieses Cmdlet macht genau das, was Sie denken – es beendet die Sitzung (Abbildung 4).

Get-TSSession -ComputerName HYPERV -State Disconnected |  Dabei gilt: {$ _. SessionID -ne 0} |  Stop-TSSession
Get-TSSession -ComputerName HYPERV -State Disconnected | Dabei gilt: {$ _. SessionID -ne 0} | Stop-TSSession

Das Cmdlet Stop-TSSession meldet eine Sitzung zwangsweise ab, was dazu führen kann, dass Endbenutzer ihre Arbeit verlieren, und fordert den Administrator dazu auf. Ich könnte hier einfach “A” drücken und weitermachen, aber manchmal möchten Administratoren nicht dazu aufgefordert werden. Wenn Sie dies in ein größeres Skript aufnehmen möchten, wird das Skript durch eine Eingabeaufforderung unterbrochen. Am besten entfernen Sie diese Bestätigung.
Das Cmdlet Stop-TSSession verfügt über einen gemeinsamen PowerShell-Parameter namens –Force, mit dem Administratoren die Aktion ohne Bestätigung ausführen können.
Get-TSSession -ComputerName HYPERV -State Disconnected | Dabei gilt: {$ _. SessionID -ne 0} | Stop-TSSession -Force
Wenn Sie keine Ausgabe erhalten, wurde die Sitzung erfolgreich abgemeldet.

Similar Posts

Leave a Reply