User Profile Disk eines gelöschten Users entfernen
Hallo zusammen,
irgendwie stehe ich gerade auf dem Schlauch...
In einer Windows Server 2016 AD Umgebung mit Remote Desktops habe ich einen User gelöscht. Soweit so gut. Allerdings ist die User Profile Disk des entsprechenden Benutzers immer noch vorhanden und belegt mit knapp 70 GB unnötigen Speicherplatz.
Diese Daten können definitiv weg, aber ich dann die entsprechende vdhx-Datei einfach nicht löschen, da mir gesagt wird, die Datei würde noch in Verwendung sein.
Wo muss ich hin, um diese Datei entgültig zu löschen?
Viele Grüße
Ally
irgendwie stehe ich gerade auf dem Schlauch...
In einer Windows Server 2016 AD Umgebung mit Remote Desktops habe ich einen User gelöscht. Soweit so gut. Allerdings ist die User Profile Disk des entsprechenden Benutzers immer noch vorhanden und belegt mit knapp 70 GB unnötigen Speicherplatz.
Diese Daten können definitiv weg, aber ich dann die entsprechende vdhx-Datei einfach nicht löschen, da mir gesagt wird, die Datei würde noch in Verwendung sein.
Wo muss ich hin, um diese Datei entgültig zu löschen?
Viele Grüße
Ally
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 576340
Url: https://administrator.de/contentid/576340
Ausgedruckt am: 14.11.2024 um 03:11 Uhr
17 Kommentare
Neuester Kommentar
Zitat von @Allyfied:
Ok, nach dem Neustart konnte ich die Datei löschen.
Muss ich denn jedes Mal den Server neustarten, wenn ich den Müll, eines seit mind. 6 Monaten inaktiven Users, löschen will?
Ok, nach dem Neustart konnte ich die Datei löschen.
Muss ich denn jedes Mal den Server neustarten, wenn ich den Müll, eines seit mind. 6 Monaten inaktiven Users, löschen will?
Nein. Es geht so, oder du beendest über compmgmt.msc den Zugriff auf die VHDX wie bereits oben geschrieben ;)
Du könntest versuchen die Sitzung auf dem File-Server für diese eine Datei zu beenden.
Computerverwaltung -> Freigaben -> Sitzungen -> entsprechende Sitzung beenden.
Schau dann noch bei den geöffneten Dateien, ob dort auch etwas vorhanden ist. Vielleicht reicht das ja, damit du den Server nicht neustarten musst.
Viele Grüße
Computerverwaltung -> Freigaben -> Sitzungen -> entsprechende Sitzung beenden.
Schau dann noch bei den geöffneten Dateien, ob dort auch etwas vorhanden ist. Vielleicht reicht das ja, damit du den Server nicht neustarten musst.
Viele Grüße
Ergänzung:
Ich halte es für möglich, wenn die Sitzung auf dem TS nicht sauber abgemeldet wurde oder, dass die Verbindung zwischen dem UPDHost und dem TS mal weg war.
Die VHDX kann dann in einen Zustand fallen, der sie verriegelt und nicht freigibt.
Bei UPDs ist es immer wichtig, dass die Sitzungen sauber abmelden. Dann werden die auch losgelassen.
Ich halte es für möglich, wenn die Sitzung auf dem TS nicht sauber abgemeldet wurde oder, dass die Verbindung zwischen dem UPDHost und dem TS mal weg war.
Die VHDX kann dann in einen Zustand fallen, der sie verriegelt und nicht freigibt.
Bei UPDs ist es immer wichtig, dass die Sitzungen sauber abmelden. Dann werden die auch losgelassen.
Ich hätte noch einen Tipp für Dich:
Ich verwende an meiner TS-Farm fünf Scripte:
1. Zum Sperren der Möglichkeit, neue Sitzungen anzumelden. (Powershell)
2. Zur automatischen Abmeldung der Benutzer innerhalb eines festgelegten Zeitpunkts. (VBScript von jedem Nutzer gestartet)
3. Zum Reboot aller TS in Reihenfolge. (Powershell)
4. Zum Defrag und Resizing der UPDs. (Powershell)
5. Zum Entsperren der Möglichkeit, neue Sitzungen anzumelden. (Powershell)
Dadurch kann ich einen Großteil schon automatisieren.
Wenn Du Interesse hast, stelle ich sie Dir zur Verfügung.
Ich verwende an meiner TS-Farm fünf Scripte:
1. Zum Sperren der Möglichkeit, neue Sitzungen anzumelden. (Powershell)
2. Zur automatischen Abmeldung der Benutzer innerhalb eines festgelegten Zeitpunkts. (VBScript von jedem Nutzer gestartet)
3. Zum Reboot aller TS in Reihenfolge. (Powershell)
4. Zum Defrag und Resizing der UPDs. (Powershell)
5. Zum Entsperren der Möglichkeit, neue Sitzungen anzumelden. (Powershell)
Dadurch kann ich einen Großteil schon automatisieren.
Wenn Du Interesse hast, stelle ich sie Dir zur Verfügung.
1. Zum Sperren der Möglichkeit, neue Sitzungen anzumelden. (Powershell)
Geht doch such über den Broker über die GUI. Oder automatisierst du das? Wenn ja warum?2. Zur automatischen Abmeldung der Benutzer innerhalb eines festgelegten Zeitpunkts. (VBScript von jedem Nutzer gestartet)
Ich lass den Server automatisch Neustarten, da werden die User auch sauber angemeldet. Entweder über Aufgabenplanung oder direkt übers das vCenter.VBScript ist sowieso überholt ;)
3. Zum Reboot aller TS in Reihenfolge. (Powershell)
Siehe Antwort oben4. Zum Defrag und Resizing der UPDs. (Powershell)
Das bringt welchen Vorteil? Außer „Speicherplatz?5. Zum Entsperren der Möglichkeit, neue Sitzungen anzumelden. (Powershell)
Geht ja über die GUI vom Broker ;). Wie Punkt 1.Zitat von @tech-flare:
1. Zum Sperren der Möglichkeit, neue Sitzungen anzumelden. (Powershell)
Geht doch such über den Broker über die GUI. Oder automatisierst du das? Wenn ja warum?Ja. Weil ich dann sonntagnachts um 1 Uhr pennen kann und nicht aufstehen muss.
2. Zur automatischen Abmeldung der Benutzer innerhalb eines festgelegten Zeitpunkts. (VBScript von jedem Nutzer gestartet)
Ich lass den Server automatisch Neustarten, da werden die User auch sauber angemeldet. Entweder über Aufgabenplanung oder direkt übers das vCenter.Ich sehe einen Unterschied zwischen Sessionkill von außen und Sessionlogoff aus dem Kontext des Benutzers.
VBScript ist sowieso überholt ;
Und dennoch gibt es diese Sprache immernoch. Selbst die Lizenzsteuerung slmgr.vbs ist ein Vbscript. Sie hat gewisse Vorzüge, die ich nicht missen möchte.3. Zum Reboot aller TS in Reihenfolge. (Powershell)
Siehe Antwort obenSiehe Antwort oben.
4. Zum Defrag und Resizing der UPDs. (Powershell)
Das bringt welchen Vorteil? Außer „Speicherplatz?5. Zum Entsperren der Möglichkeit, neue Sitzungen anzumelden. (Powershell)
Geht ja über die GUI vom Broker ;). Wie Punkt 1.Zitat von @tech-flare:
Interessiert mich nur, da ich auch 2 TS Farmen betreibe
Siehe Antwort oben.
Mehr Tempo.
Bei was? Dort drin liegen doch nur Appdata, Downloads, Dokumente, Bilder4. Zum Defrag und Resizing der UPDs. (Powershell)
Das bringt welchen Vorteil? Außer „Speicherplatz?Interessiert mich nur, da ich auch 2 TS Farmen betreibe
Appdata ist eine der Verzeichnisstrukturen, die die höchste Schreib-/Leselast aufweisen. Jedes Programm, dass mit temporären Dateien und/oder Profilen auf Dateibasis arbeitet, liest und schreibt da rein. Allen voran so ziemlich jeder Internetbrowser, wenn Du das nicht umgedreht hast.
Eine UPD-VHDX bläht sich nunmal auf bis zur festen Größe.
Meine Erfahrung hat mir gezeigt, dass eine solche Offline-Wartung durchaus sinnvoll und gut ist zumal ich den ganzen Dreck nicht mehr mitsichern muss.
1.
Zum Sperren der Möglichkeit, neue Sitzungen anzumelden. (Powershell)
Einbindung über die Aufgabenplanung des ConnectionBrokers.
2. Zur automatischen Abmeldung der Benutzer innerhalb eines festgelegten Zeitpunkts. (VBScript von jedem Nutzer gestartet)
Wird als Startscript von jedem Nutzer gestartet. Der Abmeldezeitraum sollte hinter dem Sperrzeitpunkt des ersten Scriptes liegen.
Dann kann sich niemand mehr anmelden und die noch angemeldeten Nutzer werden automatisch abgemeldet:
Terminalserver - automatische Abmeldung aller Benutzer innerhalb eines gesetzten Zeitfensters
3. Zum Reboot aller TS in Reihenfolge. (Powershell)
Einbindung wieder über die Aufgabenplanung des Connection Brokers.
Alle SessionHosts in der gefundenen Collection werden nach einander gestartet. Es wird immer gewartet, bis die Powershell des Rechners wieder antwortet, bevor der nächste dran ist.
4. Zum Defrag und Resizing der UPDs. (Powershell)
https://github.com/T13nn3s/Resize-UserProfileDisk
5. Zum Entsperren der Möglichkeit, neue Sitzungen anzumelden. (Powershell)
Erfolgt zum Schluss über die Aufgabenplanung des Connection Brokers.
Seit ich das so mache, habe ich Sonntags etwas länger frei.
Gruß
bdmvg
Zum Sperren der Möglichkeit, neue Sitzungen anzumelden. (Powershell)
Einbindung über die Aufgabenplanung des ConnectionBrokers.
#Import-Module RemoteDesktop
ForEach ($CollectionName in Get-RDSessionCollection)
{
ForEach ($HostToDisable in (get-rdsessionhost -collectionname $CollectionName.CollectionName |
where {$_.NewConnectionAllowed -ne "No"}))
{
$HostToDisable
Set-RDSessionHost $HostToDisable.SessionHost -NewConnectionAllowed "No"
}
}
2. Zur automatischen Abmeldung der Benutzer innerhalb eines festgelegten Zeitpunkts. (VBScript von jedem Nutzer gestartet)
Wird als Startscript von jedem Nutzer gestartet. Der Abmeldezeitraum sollte hinter dem Sperrzeitpunkt des ersten Scriptes liegen.
Dann kann sich niemand mehr anmelden und die noch angemeldeten Nutzer werden automatisch abgemeldet:
Terminalserver - automatische Abmeldung aller Benutzer innerhalb eines gesetzten Zeitfensters
3. Zum Reboot aller TS in Reihenfolge. (Powershell)
Einbindung wieder über die Aufgabenplanung des Connection Brokers.
Alle SessionHosts in der gefundenen Collection werden nach einander gestartet. Es wird immer gewartet, bis die Powershell des Rechners wieder antwortet, bevor der nächste dran ist.
ForEach ($CollectionName in Get-RDSessionCollection)
{
ForEach ($HostToReboot in (get-rdsessionhost -collectionname $CollectionName.CollectionName))
{
$HostToReboot
Restart-Computer -ComputerName $HostToReboot.SessionHost -Wait -For PowerShell -Timeout 300 -Delay 2
}
}
4. Zum Defrag und Resizing der UPDs. (Powershell)
https://github.com/T13nn3s/Resize-UserProfileDisk
5. Zum Entsperren der Möglichkeit, neue Sitzungen anzumelden. (Powershell)
Erfolgt zum Schluss über die Aufgabenplanung des Connection Brokers.
ForEach ($CollectionName in Get-RDSessionCollection)
{
ForEach ($HostToEnable in (get-rdsessionhost -collectionname $CollectionName.CollectionName |
where {$_.NewConnectionAllowed -ne "Yes"}))
{
$HostToEnable
Set-RDSessionHost $HostToEnable.SessionHost -NewConnectionAllowed "Yes"
}
}
Seit ich das so mache, habe ich Sonntags etwas länger frei.
Gruß
bdmvg