Per GPO bestimmten User auf den Client und Server löschen
Hallo Admin Kollegen,
Ich möchte gerne unter
C:\Users\Test
Das Profil und den User "Test" komplett löschen lassen auf allen Clients und Servern.
Dies möchte Ich gerne per GPO realisieren.
Hat jemand ne Idee ?
Dankeschön
Ich möchte gerne unter
C:\Users\Test
Das Profil und den User "Test" komplett löschen lassen auf allen Clients und Servern.
Dies möchte Ich gerne per GPO realisieren.
Hat jemand ne Idee ?
Dankeschön
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 62846046370
Url: https://administrator.de/forum/per-gpo-bestimmten-user-auf-den-client-und-server-loeschen-62846046370.html
Ausgedruckt am: 22.12.2024 um 23:12 Uhr
10 Kommentare
Neuester Kommentar
würde ich per Batch oder Powershell-Befehle in einer Computerrichtlinie machen.
Für das saubere Löschen des Benutzerprofils gibt es hier eine Lösung: Profile sauber löschen via Batch
Für das saubere Löschen des Benutzerprofils gibt es hier eine Lösung: Profile sauber löschen via Batch
Mache ich mittels PS Startskript und GPO:
Gruß
function Remove-Userprofile {
[cmdletbinding(SupportsShouldProcess=$true,ConfirmImpact="High")]
param(
[Parameter(mandatory=$true)][string[]]$identity
)
begin {
if(!(new-object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole(544)){
write-error "CMDLet needs to be run elevated!" -Category PermissionDenied
break
}
Add-Type –MemberDefinition '[DllImport("ntdll.dll")] public static extern int RtlAdjustPrivilege(int Privilege, bool Enable, bool CurrentThread, ref bool EnabledOut);' -name token -namespace priv | out-null
9,17,18 | %{[void][priv.token]::RtlAdjustPrivilege($_,1,0,[ref]0)}
$userprofiles = Get-CimInstance Win32_Userprofile | ?{!$_.Special -and !$_.Loaded}
}
process{
foreach($ident in $identity){
if ($ident -notlike 'S-1-5*'){
try{
$ident = (New-Object System.Security.Principal.NTAccount($ident)).Translate([System.Security.Principal.SecurityIdentifier]).Value
}catch{}
}
$profile = $userprofiles | ?{$_.SID -eq $ident}
if ($profile){
if ($PSCmdlet.ShouldProcess($ident,"Remove user profile")){
Write-Verbose "Removing profile for identity '$ident'"
# remove userprofile
$profile | Remove-CimInstance
# remove profile data
if (Test-Path -LiteralPath $profile.LocalPath -PathType Container){
remove-item -LiteralPath $profile.LocalPath -Recurse -Force
}
}
}else{
Write-Warning "Profile for identity '$ident' not found."
}
}
}
end{}
}
Remove-Userprofile -identity 'Test' -verbose
Gruß
Du hattest nicht spezifiziert ob es sich um einen lokalen User auf den Maschinen oder Domain-User handelt.
WARNUNG: Profile for identity 'Test' not found.
Wenn es kein lokaler User auf den Maschinen ist sondern ein AD-User bitte auch die Domain vor dem Usernamen angeben!Remove-Userprofile -identity 'DOMAIN\Test' -verbose
Läuft hier schon seit ewigen Zeiten einwandfrei als Startskript per GPO auf die Maschinen deployed, du musst es also fehlerhaft angewendet haben.
hatte es zum testen gelöscht, muss ich erst neu ziehen.
Jepp, so kann das ja nicht hinhauen, das geht nur wenn der Profileintrag des Users auch noch in der Registry vorhanden ist.Zitat von @Technoolli:
Aber kann Ich das wie oben geschrieben auch auf die gesamte Domaine ausweiten ?
Aber kann Ich das wie oben geschrieben auch auf die gesamte Domaine ausweiten ?
Ja sicher steht doch oben schon x mal.
Nimm eine GPO, dort das Skript als Computer-Startskript definieren und auf die gewünschte OU anwenden, das wolltest du ja auch in deinem Beitrag!
Dies möchte Ich gerne per GPO realisieren.