PowerShell Hack: UPD-Platte für einen User aushängen

User Profile Disk in RDS ab Server 2012 ist ein cooles Feature, was in der Regel auch super funktioniert. Doch wenn’s mal nicht funktioniert, wird es ärgerlich: Meistens liegt die Ursache nämlich darin, dass eine VHDX mit dem umgeleiteten Benutzerprofil nicht aus dem Session Host oder der VDI-Maschine ausgehängt wurde. Danach manuell zu suchen ist ein ziemlicher Schmerz, aber wenn man Admin-Recht und das AD-Modul in Powershell hat, kann man das recht gut automatisieren.

Wir gehen vom Benutzernamen und den Fileserver aus, auf dem die UPDs liegen:

Für den Fall, dass jemand den Usernamen als NETBIOS oder UPN eingibt, normalisieren wir ihn noch zu SAMAccountName:

Als erstes brauchen wir die SID des Users, da nach ihr die Platte benannt ist:

Der nachfolgende Code geht auf die Arbeit von Jeffrey Patton (@jeffpatton) zurück und fragt offene Dateien direkt beim Fileserver ab:

Wenn also jetzt in $rdsh ein Wert enthalten ist, ist es ein Computername. Jetzt sollte man natürlich prüfen, ob da eine Sitzung offen ist usw., aber für den Proof of Concept schauen wir einfach nur, ob eine Disk für diesen User an diesem Host eingebunden ist:

Um die Disk nun auszuhängen, muss man auf dem Terminalserver den folgenden Befehl ausführen:

Das Problem dabei ist, dieser Befehl muss mit erhöhten Rechten ausgeführt werden. Damit scheidet PowerShell-Remoting als Vehikel schon mal aus.
Ein Ansatz wäre es, auf allen Terminalservern einen geplanten Task mit erhöhten Rechten einzurichten, der aus einer Datei die Platten-ID liest und sie dann aushängt. Dann würde man remote die Datei beschreiben und anschließend den geplanten Task anschubsen.
Ich habe ein Skript auf PSGallery veröffentlicht, das alle möglichen Sicherheitsabfragen und Automatismen implementiert und am Ende den Befehl ausgibt, den man am Terminalserver per Copy&Paste eingeben muss: https://www.powershellgallery.com/packages/Disconnect-RDUserProfileDisk

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.