Ich musste grade eine ganze Menge deaktivierter ActiveDirectory Benutzer aus allen Gruppen entfernen. Andernfalls hätten diese im AADConnect Synchronisationsfehler ausgelöst, da hier deaktivierte Benutzer-Objekte nicht synchronisiert werden.
Mein PowerShell Script das das sehr erfolgreich übernommen hat sieht so aus:
# Durch die OU laufen und deaktivierte User einsammeln ...
foreach ($username in (Get-ADUser -Filter {enabled -eq $false} -SearchBase "OU=<HIER SUCHEN>,DC=<DOMAIN>,DC=<TLD>")) {
# ... deren Group-Memberships holen ...
$groups = Get-ADPrincipalGroupMembership $username;
# ... durch die Gruppen laufen ...
foreach ($group in $groups) {
# ... wenn Gruppenname stimmt (z.B. "VPN*") ...
if ($group.name -Like "<NAME>") {
# ... User entfernen
Remove-ADGroupMember -Identity $group.name -Member $username.SamAccountName -Confirm:$false;
# Ausgabe
write-host "Habe" $username "von" $group.name "entfernt";
}
}
}
Das funktioniert natürlich nicht nur mit Sicherheitsgruppen, sondern auch mit Verteilerlisten.
Die Suche nach dem/den Gruppennamen kann man in der Zeile $group.name -Like "Domänen-*"
anpassen; hier tun es natürlich auch die anderen Operatoren wie -eq oder -neq.