Benutzerprofile mit PowerShell & CIM löschen

A common pain point in an IT administrator’s career is user profiles. User profiles are a ubiquitous part of a Windows IT pro’s life; especially those that manage virtual desktop environments like Remote Desktop Services (RDS) or Citrix. In this post, I’m going to demonstrate a way you take out your aggression by using PowerShell to delete user profiles (and discover them).

Windows-Systemadministratoren müssen sich mit

  • korrupten Benutzerregistrierungsdatenbanken
  • Dateien, die über alle Benutzerprofile hinweg geteilt werden müssen
  • herausfinden, wie man korrupte Profile neu erstellt
  • …und mehr

auseinandersetzen. Was einst eine frustrierende Erfahrung war, ist mit PowerShell ein wenig weniger frustrierend geworden. Hier sind einige Möglichkeiten, wie PowerShell die Verwaltung von Windows-Benutzerprofilen erleichtern kann.

Verwalten und Berichten von Active Directory, Exchange und Microsoft 365 mit ManageEngine ADManager Plus. Kostenlose Testversion herunterladen!

Benutzerprofile auflisten

Es ist einfach, einen Blick auf Benutzerprofile im Dateisystem auf einem einzelnen Windows-Computer zu werfen. Schauen Sie einfach in den C:\Users-Ordner. Aber nicht nur, dass Sie dadurch nicht das vollständige Bild erhalten, es ist auch problematisch aufgrund potenzieller Zugriffsprobleme auf das Dateisystem. Es gibt einen besseren Weg, und das ist durch WMI oder CIM. In CIM existiert eine Klasse namens Win32_UserProfile. Diese Klasse enthält alle Profile, die auf einem Gerät existieren, und viele andere nützliche Informationen, die ein einfacher Dateisystemordner Ihnen nicht verraten wird.

Mit PowerShell können Sie auf diese CIM-Klasse mit dem Befehl Get-CimInstance zugreifen.

Unten suche ich nach dem ersten Benutzerprofil auf dem lokalen Computer. Sie werden viele nützliche Informationen wie LastUseTime, SID und so weiter bemerken.

PS C:\> Get-CimInstance -ClassName win32_userprofile | Select-Object -First 1


AppDataRoaming                   : Win32_FolderRedirectionHealth
Contacts                         : Win32_FolderRedirectionHealth
Desktop                          : Win32_FolderRedirectionHealth
Documents                        : Win32_FolderRedirectionHealth
Downloads                        : Win32_FolderRedirectionHealth
Favorites                        : Win32_FolderRedirectionHealth
HealthStatus                     : 3
LastAttemptedProfileDownloadTime :
LastAttemptedProfileUploadTime   :
LastBackgroundRegistryUploadTime :
LastDownloadTime                 :
LastUploadTime                   :
LastUseTime                      : 3/14/2019 3:06:39 PM
Links                            : Win32_FolderRedirectionHealth
Loaded                           : False
LocalPath                        : C:\Users\.NET v4.5 Classic
Music                            : Win32_FolderRedirectionHealth
Pictures                         : Win32_FolderRedirectionHealth
RefCount                         :
RoamingConfigured                : False
RoamingPath                      :
RoamingPreference                :
SavedGames                       : Win32_FolderRedirectionHealth
Searches                         : Win32_FolderRedirectionHealth
SID                              : S-1-5-82-3876422241-1344743610-1729199087-774402673-2621913236
Special                          : False
StartMenu                        : Win32_FolderRedirectionHealth
Status                           : 0
Videos                           : Win32_FolderRedirectionHealth
PSComputerName                   :

Der Get-CimInstance-Cmdlet funktioniert nicht nur lokal, sondern auch remote. Durch Verwendung des ComputerName-Parameters können Sie 1, 10 oder 100 verschiedene Remote-Computer angeben, und er wird freudig jeden abfragen.

PS C:\> Get-CimInstance -ClassName Win32_UserProfile -ComputerName localhost,WINSRV

Löschen von Benutzerprofilen

Sobald Sie wissen, wie Sie Benutzerprofile auf Computern aufzählen, können Sie einen Schritt weiter gehen und diese Benutzerprofile auch löschen.

I can’t count how many times I’ve had to delete user profiles because something got corrupted and I just needed the user to log in again and recreate it. At one time, I would simply have the user log off and remove the C:\Users<UserName> folder from the file system. Usually it works, sometimes it didn’t. What I didn’t realize was that I was actually leaving some remnants behind.

Der richtige Weg, dies zu tun, besteht darin, eine Entfernung über CIM zu initiieren.

Mit derselben CIM-Klasse, die Sie gerade durchgegangen sind, ist es möglich, nicht nur Profile anzuzeigen, sondern sie auch vollständig zu entfernen. Dies entspricht dem Betreten des Benutzerprofile-Felds unter Systemeinstellungen und Drücken der Löschen-Schaltfläche.

User Profiles

Um dies zu tun, zählen Sie die Benutzerprofile erneut auf und wenden Sie diesmal einen Filter an, um ein einzelnes Benutzerprofil zum Entfernen auszuwählen. In diesem Fall entfernen Sie das Benutzerprofil mit dem Namen UserA. Dies können Sie tun, indem Sie das Where-Object-Cmdlet von PowerShell verwenden und einige Zeichenmanipulationen durchführen, um den Benutzerordnernamen aus der LocalPath-Eigenschaft zu extrahieren, wie unten gezeigt.

Sobald Sie in der Lage sind, dieses einzelne Profil einzuschränken, können Sie diese CIM-Instanz an das Remove-CimInstance-Cmdlet für jedes Objekt übergeben, das Get-CimInstance zurückgibt. Dieser Prozess entfernt das Benutzerprofil aus dem Dateisystem und der Registrierung.

Get-CimInstance -Class Win32_UserProfile | Where-Object { $_.LocalPath.split('\')[-1] -eq 'UserA' } | Remove-CimInstance

Wenn Sie dies auf mehrere Computer ausweiten möchten, verwenden Sie einfach den ComputerName-Parameter bei Get-CimInstance.

Get-CimInstance -ComputerName SRV1,SRV2,SRV3 -Class Win32_UserProfile | Where-Object { $_.LocalPath.split('\')[-1] -eq 'UserA' } | Remove-CimInstance

Verwalten und Berichten Sie über Active Directory, Exchange und Microsoft 365 mit ManageEngine ADManager Plus. Kostenlose Testversion herunterladen!

Zusammenfassung

Sie haben jetzt eine einfache Möglichkeit gesehen, Windows-Benutzerprofile aufzulisten und zu löschen. Wenn Ihnen die CIM-Klasse Win32_UserProfile nicht bekannt war, haben Sie möglicherweise den Ordner C:\Benutzer<Benutzername> als das Profil korreliert, aber Sie sollten jetzt wissen, das Win32_UserProfile-CIM-Objekt zu löschen.

Sie können sehen, dass das Benutzerprofil mehr ist als nur ein einfacher Dateisystemordner. Verwenden Sie CIM, wenn Sie Benutzerprofile auf Windows-Computern in Ihrer Umgebung abfragen oder löschen müssen.

Source:
https://adamtheautomator.com/powershell-delete-user-profile/