Löschen von Userprofilen auf Windows10-Clients unter Windows Server 2019
Hallo zusammen,
mein letzter Hilferuf hatte bereits die Thematik des Löschens von lokal gespeicherten Userprofilen zum Inhalt.
Zunächst habe ich per PS-Script und unter Zuhilfenahme von WinLogOnView alle User in eine Datei geschrieben, die lokal auf den Clients gelöscht werden können. Zunächst habe ich händisch an einem Client - wie
hier beschrieben - Profile gelöscht. Dabei zeigte sich, dass einige Profile über die Systemsteuerung gar nicht gefunden werden, wohl aber der entsprechende Ordner in C:\Users vorhanden ist. Auch dieser lässt sich händisch löschen, obwohl diese Methode nicht empfohlen wird. Die Anmeldung erfolgte auf dem Client per lokalem Administrator oder auch als Domänenadministrator. Damit war zunächst ein - wenn auch sehr umständlicher - Ansatz gegeben. Die erste Frage ist, mit welchen Konsequenzen man rechnen muss, wenn man die Ordner auf C:\Users löscht?
Nach einigen Versuchen bin ich mit 3 verschiedenen Ansätzen per Script vorgegangen um den Vorgang zu automatisieren. Leider scheitere ich stets an folgender o. ä. Fehlermeldung, hier die auf das erste Script:
Die Scripte sind dabei auf die wesentlichen Zeilen reduziert, alle laufen mit WhatIf oder Weglassen des Löschbefehls und Kontrollausgabe fehlerfrei.
Script 1)
Script 2)
Script 3)
Ich hoffe, ich habe die Bedingungen ausreichend genau formuliert. Ich wäre sehr dankbar, wenn mir jemand beim Abstellen des Fehlers helfen könnte, Außerdem würde mich natürlich der worst case interessieren, wenn ich die Methode Nur Löschen der Ordner in C:\Users wählen würde.
Gruß
PS Den Weg über das Löschen von alten Profilen per GPO habe ich registriert, möchte ihn aber erst nach Bereinigung einschlagen.
mein letzter Hilferuf hatte bereits die Thematik des Löschens von lokal gespeicherten Userprofilen zum Inhalt.
Zunächst habe ich per PS-Script und unter Zuhilfenahme von WinLogOnView alle User in eine Datei geschrieben, die lokal auf den Clients gelöscht werden können. Zunächst habe ich händisch an einem Client - wie
hier beschrieben - Profile gelöscht. Dabei zeigte sich, dass einige Profile über die Systemsteuerung gar nicht gefunden werden, wohl aber der entsprechende Ordner in C:\Users vorhanden ist. Auch dieser lässt sich händisch löschen, obwohl diese Methode nicht empfohlen wird. Die Anmeldung erfolgte auf dem Client per lokalem Administrator oder auch als Domänenadministrator. Damit war zunächst ein - wenn auch sehr umständlicher - Ansatz gegeben. Die erste Frage ist, mit welchen Konsequenzen man rechnen muss, wenn man die Ordner auf C:\Users löscht?
Nach einigen Versuchen bin ich mit 3 verschiedenen Ansätzen per Script vorgegangen um den Vorgang zu automatisieren. Leider scheitere ich stets an folgender o. ä. Fehlermeldung, hier die auf das erste Script:
Remove-CimInstance : Dem Client fehlt ein erforderliches Recht.
In E:\Test\Delete_CIMInstance_Auswahl.ps1:13 Zeichen:75
+ ... serprofile -Filter "SID = '$($UserAccount.SID)'" | Remove-CimInstance
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Win32_UserProfi...5-395216887...):CimInstance) [Remove-CimInstance], CimException
+ FullyQualifiedErrorId : HRESULT 0x80070522,Microsoft.Management.Infrastructure.CimCmdlets.RemoveCimInstanceCommand
Script 1)
$UserAccount = Get-CimInstance Win32_UserProfile -Filter "Loaded = '$false'" | Ogv -Title 'Wähle den UserAccount den du löschen möchtest!' -PassThru
# Get-CimInstance Win32_Userprofile -Filter "SID = '$($UserAccount.SID)'" | Remove-CimInstance
Script 2)
Get-WmiObject -class Win32_UserProfile |
Where { ($_.localpath -eq "C:\Users\$irgendeinUser")} | Remove-WmiObject}
Script 3)
$profiles = Get-WmiObject -Class Win32_UserProfile -ErrorAction SilentlyContinue
foreach ($profile in $profiles) {
# Translate User SID to Profilename
$objSID = New-Object System.Security.Principal.SecurityIdentifier($profile.sid)
$objuser = $objsid.Translate([System.Security.Principal.NTAccount])
$profilename = $objuser.value.split("\")[1] # Split [1] erzeugt Username
# $Deleters ist ein Array, in dem die Usernamen gespeichert sind
$inDeleters = $false # Flag um Mitgliedschaft in Deleters festzustellen
foreach ($del in $deleters) {if ($del -like "$profilename*") {$inDeleters = $true}}
if ($inDeleters) { $profile.delete() }
}
Ich hoffe, ich habe die Bedingungen ausreichend genau formuliert. Ich wäre sehr dankbar, wenn mir jemand beim Abstellen des Fehlers helfen könnte, Außerdem würde mich natürlich der worst case interessieren, wenn ich die Methode Nur Löschen der Ordner in C:\Users wählen würde.
Gruß
PS Den Weg über das Löschen von alten Profilen per GPO habe ich registriert, möchte ihn aber erst nach Bereinigung einschlagen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1847160278
Url: https://administrator.de/contentid/1847160278
Ausgedruckt am: 19.11.2024 um 09:11 Uhr
3 Kommentare
Neuester Kommentar