"Konto unbekannt" auf AD-Clients per Powershell löschen
Hallo zusammen,
bei der letzten Clientrechner-Wartung hatte ich diverse, veraltete bzw. unbekannte Profile.
Da kam mir die Idee regelmäßig alle AD-Rechner diesbezüglich zu reinigen.
Es gibt wohl auch eine GPO-Einstellung dazu, die erscheinende Meldung wirft beim User aber wohl nur unnötig Fragen auf.
https://social.technet.microsoft.com/wiki/contents/articles/28647.how-to ...
Leider reichen meine Programmierkenntnisse nicht dafür.
Lokal funktioniert das so schon mal:
Müsste man aber eigentlich auch domänenweit über
pipen können?!
Danke und Gruß
rudeboy
bei der letzten Clientrechner-Wartung hatte ich diverse, veraltete bzw. unbekannte Profile.

Es gibt wohl auch eine GPO-Einstellung dazu, die erscheinende Meldung wirft beim User aber wohl nur unnötig Fragen auf.
https://social.technet.microsoft.com/wiki/contents/articles/28647.how-to ...
Leider reichen meine Programmierkenntnisse nicht dafür.
Lokal funktioniert das so schon mal:
Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-732))} | Remove-WmiObject
Get-ADComputer -Filter * | Select -Expand Name
Danke und Gruß
rudeboy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 331405
Url: https://administrator.de/forum/konto-unbekannt-auf-ad-clients-per-powershell-loeschen-331405.html
Ausgedruckt am: 22.02.2025 um 15:02 Uhr
6 Kommentare
Neuester Kommentar

Get-WMIObject akzeptiert den Parameter -ComputerName, und der akzeptiert auch ein Array, jetzt sollte es klick machen
.
ACHTUNG mit deinem Befehl löschst du auch Profile von noch vorhandenen Usern. Besser du checkst die SID Auflösung zu einem User, wie hier:
Powershell Script zum löschen von lokalen Profilen bei "Account Unknown"
Gruß
ACHTUNG mit deinem Befehl löschst du auch Profile von noch vorhandenen Usern. Besser du checkst die SID Auflösung zu einem User, wie hier:
Powershell Script zum löschen von lokalen Profilen bei "Account Unknown"
gwmi win32_Userprofile | ?{try{$result = (New-Object System.Security.Principal.SecurityIdentifier($_.SID)).Translate([System.Security.Principal.NTAccount])}catch{$_}} | remove-wmiobject

Zitat von @132272:
Funktioniert der Befehl so? Eigentlich müsste im catch teil dein $_ die Exception repräsentieren, wodurch du eine Exception an "remove-wmiobject" weiterleitest.gwmi win32_Userprofile | ?{try{$result = (New-Object System.Security.Principal.SecurityIdentifier($_.SID)).Translate([System.Security.Principal.NTAccount])}catch{$_}} | remove-wmiobject
Müsste dann eigentlich so sein:
gwmi win32_Userprofile | ?{$obj=$_;try{$voidResult = (New-Object System.Security.Principal.SecurityIdentifier($obj.SID)).Translate([System.Security.Principal.NTAccount])}catch{$obj}} | remove-wmiobject
Außerdem ist gwmi (get-wmiobject) als deprecated markiert und erhält schon seit längerem keine funktions/performance updates wie Microsoft es nennt.
Get-CimInstance win32_Userprofile | ?{$obj=$_;try{$voidResult = (New-Object System.Security.Principal.SecurityIdentifier($obj.SID)).Translate([System.Security.Principal.NTAccount])}catch{$obj}} | Remove-CimInstance

Funktioniert der Befehl so?
Ja, weil hier ja tatsächlich nichts ausgeben werden soll und wird, da das in einem where-object stattfindet! Das ist nur dafür da damit dass Pipeline Object weitergeleitet wird Außerdem ist gwmi (get-wmiobject) als deprecated markiert
gwmi nur damit er es auch mit PS 2.0 nutzen kann, wer weiß ob er das noch auf reinen W7 ohne MMF Update abfackeln will
@132272
Jetzt weiß ich auch wieder, wieso ich diese Aliase sehr selten verwende...
Das gabs damals noch nicht?
Ist man nicht mehr dran gewöhnt, seitdem PowerShell mittels WSUS verteilt werden kann
Und automatisch alle Clients (mit wenigen außnahmen) die Version 5 haben.
Zitat von @132272:
Ja, weil hier ja tatsächlich nichts ausgeben werden soll und wird, da das in einem where-object stattfindet! Das ist nur dafür da damit dass Pipeline Object weitergeleitet wird
, könnte man also auch durch ein $true ersetzen.
Danke für die Erklärung. Dachte jetzt wirklich kurz, dass "?" der alias für ein foreach-Object währe, mein Fehler.Ja, weil hier ja tatsächlich nichts ausgeben werden soll und wird, da das in einem where-object stattfindet! Das ist nur dafür da damit dass Pipeline Object weitergeleitet wird
Jetzt weiß ich auch wieder, wieso ich diese Aliase sehr selten verwende...
Außerdem ist gwmi (get-wmiobject) als deprecated markiert
gwmi nur damit er es auch mit PS 2.0 nutzen kann, wer weiß ob er das noch auf reinen W7 ohne MMF Update abfackeln willIst man nicht mehr dran gewöhnt, seitdem PowerShell mittels WSUS verteilt werden kann

Das gabs damals noch nicht?
Nope, erst seit PS 3.0.