Bei der Verwendung von Roaming Profiles auf einem Terminalserver kann es vorkommen, dass die lokal zwischengespeicherten Benutzerprofile bei der Abmeldung nicht mehr gelöscht werden. Dies hat zur Folge, dass weder der Ordner für die Benutzerprofile, noch die damit verknüpften Registry-Einträge aus dem System entfernt werden. Aber, mit einem kleinen Skript kannst Du lokale Benutzerprofile auf dem Terminalserver löschen.
Per PowerShell lokale Benutzerprofile auf dem Terminalserver löschen
Anders als bei User-Profile-Disks, bei denen die Benutzerprofile in VHD-Dateien gespeichert sind, werden bei Roaming Profiles die Dateien des Benutzerprofils meist in die lokalen Benutzerprofile geladen. Meldet sich der Benutzer wieder vom Terminalserver ab, so werden die Änderungen auf den zentralen Speicherort geschrieben und das lokale Profil wieder gelöscht.
Soweit, so gut. Allerdings funktioniert das abschließende Löschen des lokalen Benutzerprofils nicht immer wie gewünscht. Dadurch entstehen im Benutzerprofilordner des Terminalservers unter Umständen sehr viele verwaiste Ordner (username.001, username.002). Außerdem werden die Benutzerprofile nicht aus der Profile List in der Windows Registry entfernt (HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList).
Um das lokale Benutzerprofil auf dem Terminalserver löschen zu können müsstest Du nun (im schlimmsten Fall) zig Ordner und Einträge manuell löschen – leichter geht es aber per PowerShell.
Nicht verwendete Profile mit WMI ermitteln und entfernen
Dabei nutzen wir das Cmdlet Get-WmiObject und ermitteln aus dem WMI-Objekt , welche der lokal vorhandenen Benutzerprofile zur Zeit nicht in Verwendung sind. Diese werden anschließend gelöscht. Der hierfür benötigte Wert lautet:
Get-WmiObject win32_userprofile| Where-Object {$_.loaded -eq $False}| ForEach {$_.delete()}
Dieser Befehl entfernt ohne Rückfrage alle nicht in Verwendung befindlichen Benutzerprofile, die im lokalen Benutzerprofilverzeichnis gespeichert sind. Ebenso werden alle verwaisten Registryeinträge in der oben genannten ProfileList gelöscht. Für bessere Ergebnisse sollte dieser Befehl unmittelbar nach einem Neustart des Servers angewendet werden. Damit wird ausgeschlossen, dass sich einzelne Dateien durch etwaige Zugriffe nicht löschen lassen.
Wenn Du wissen möchtest, welche Objekte gelöscht werden können, kannst Du die Ergebnisse der Abfrage auch zunächst nur in eine Textdatei schreiben:
Get-WmiObject win32_userprofile| Where-Object {$_.loaded -eq $False} >> c:\Temp\Delete_Userprofile.txt
Ebenfalls interessant in diesem Zusammenhang:
Dieser Artikel ist wie alle anderen auf dieser Seite kostenlos für Dich und ich hoffe, ich konnte Dir weiterhelfen. Wer möchte, kann diesem Blog eine kleine Aufmerksamkeit in Form einer kleinen Spende (PayPal) oder über die Amazon Wunschliste zukommen lassen.
Hinterlasse einen Kommentar