Dieses Script löscht alle lokalen Benutzerprofile, die nicht in der ExclusionList enthalten sind. Es kommt schon mal vor, das man versuchen möchte alle Benutzerprofile zu löschen, ausser natürlich SYSTEM, Administrator und ggf. einigen speziellen Accounts. Man kann es zum Beispiel mittels automatischer Softwareverteilung an Rechner verteilen und die Profile dann löschen :-)

View source
  1.  
  2.  
  3.  
  4.  
  5. <#
  6. .SYNOPSIS
  7. Deletes all local Userprofiles
  8. .DESCRIPTION
  9. This script deletes local Userprofiles. Exceptions could be configured like (local Administrator)
  10. or local Serviceaccounts
  11. .NOTES
  12. File Name : delete_all_userprofiles.ps1
  13. Author : Martin Bettin
  14.  
  15. #>
  16. #$ComputerName = "NBWG092"
  17. $ComputerName = $env:computername
  18. #ExclusionList - Which profiles are Excluded from delete action.
  19. $excludeFiles = 'S_LocalAdmin','S_Matrix42Admin','NETZWERKDIENST','LOKALER DIENST','SYSTEM','Administrator'
  20.  
  21.  
  22.  
  23. foreach($Computer in $ComputerName)
  24. {
  25. Write-Verbose "Working on $Computer"
  26. if(Test-Connection -ComputerName $Computer -Count 1 -ea 0)
  27. {
  28. $Profiles = Get-WmiObject -Class Win32_UserProfile -Computer $Computer -ea 0
  29. foreach ($profile in $profiles)
  30. {
  31. # Traslate User SID to Profilename
  32. $objSID = New-Object System.Security.Principal.SecurityIdentifier($profile.sid)
  33. $objuser = $objsid.Translate([System.Security.Principal.NTAccount])
  34. $profilename = $objuser.value.split("\")[1]
  35. if ($excludeFiles -notcontains $profilename)
  36. {
  37.  
  38. try
  39. {
  40. $profile.delete()
  41. Write-Host "$profilename profile deleted successfully on $Computer"
  42. } catch
  43. {
  44. Write-Host "Failed to delete the profile, $profilename on $Computer"
  45. }
  46. }
  47. }
  48.  
  49. }
  50. }
  51.  
  52.  
  53.  
  54.