PowerShell • • 1 Min. Lesezeit
Benutzerverzeichnisse von nicht autorisierten Benutzern finden
Ein PowerShell-Skript, um auf einem Terminalserver übrig gebliebene Benutzerverzeichnisse von Benutzern zu finden und zu löschen, die keine AD-Gruppenmitgliedschaft mehr haben.
Wir wollten unsere Terminalserver bereinigen, indem wir vorhandene Benutzerverzeichnisse von nicht autorisierten Benutzern (z. B. gelöschte AD-Konten) löschen. Als Nebeneffekt haben wir auch alle autorisierten Benutzer identifiziert, die sich noch nie am Server angemeldet haben.
# Benutzerverzeichnisse auf einem Server (z. B. Terminalserver) von nicht autorisierten
# Benutzern finden und löschen.
# Findet auch autorisierte Benutzer, die sich noch nie angemeldet haben
# (autorisierte Benutzer ohne Benutzerverzeichnis).
Import-Module ActiveDirectory
# Der Verzeichnisname muss dem SamAccountName entsprechen; Pfad muss mit "\" enden
$pfad = "C:\Users\"
$adgruppe = "IhrGruppenname"
$benutzer = Get-ADGroupMember $adgruppe | Select-Object SamAccountName
$benutzer = $benutzer | Add-Member -MemberType AliasProperty -Name Name -Value SamAccountName -PassThru
$verz = Get-ChildItem $pfad | Where-Object { $_.Attributes -eq 'Directory' } | Select-Object Name
# Verzeichnisse ohne übereinstimmenden AD-Benutzer (sollten gelöscht werden)
$loeschen = Compare-Object $verz $benutzer -Property Name | Where-Object { $_.SideIndicator -eq '<=' }
# AD-Benutzer ohne übereinstimmendes Verzeichnis (noch nie angemeldet)
$nochNie = Compare-Object $verz $benutzer -Property Name | Where-Object { $_.SideIndicator -eq '=>' }
# Nicht autorisierte Verzeichnisse löschen
foreach ($v in $loeschen) {
$vv = $pfad + $v.Name
Remove-Item -Recurse $vv
}
Hinweis: Untergruppen (verschachtelte AD-Gruppen) werden von
Get-ADGroupMemberohne das Flag-Recursivenicht unterstützt.