The estimated reading time 2 minutes
Es ist ungemein wichtig das lokale AD (falls noch eines vorhanden ist) zu pflegen und auch deaktiviert Benutzer aus Gruppen zu entfernen. Manchmal möchte man ja die Benutzer noch nicht komplett löschen, sondern nur aus speziellen Gruppen entfernen, da hier eventuell Lizenzen oder auch Zugriffe berechtigt sind.
Ich hatte hier ebenfalls einen Anwendungsfall und habe dazu ein kleines PowerShell Skript geschrieben, welches mit eine AD Gruppe durchsucht und die deaktivierten Benutzer aus dieser AD-Gruppe entfernt. Lässt sich natürlich auch auf lokale Exchange Verteiler anwenden.
HINWEIS: sollte ein Freigegebenes Postfach / Raumpostfach dabei sein , würde dieses ebenfalls entfernt werden, da dies auch deaktivierte Benutzer sind.
Nun aber zum Script. In dieser Ausbaustufe entfernt das Script nichts aus der Gruppen, dies ist mehr oder weniger eine Simulation. Um tatsächlich Benutzer aus der Gruppe zu entfernen muss aus Zeile 23 das „-whatif“ entfernt werden.
#type the adgroup name to check $grouptoclean = "XXXXX" #### $dcfqdn = ((Get-ADDomainController).Hostname) $groupmembers = Get-ADGroupMember -Server $dcfqdn -Identity $grouptoclean | sort $inactiveusers = @() foreach($user in $groupmembers){ $dist = ($user).distinguishedName $enabled = Get-ADUser -Server $dcfqdn -Identity "$dist" | Where-Object{$_.enabled -eq $false} $sam = ($enabled).SamAccountName $upn = ($enabled).UserPrincipalName $active = ($enabled).Enabled if($enabled){ Write-Host "UPN: $upn , SAM: $sam is disabeld, Status: $active" -ForegroundColor Yellow $inactiveusers += $sam Remove-ADGroupMember -Identity $grouptoclean -Members $sam -server $dcfqdn -Confirm:$false -WhatIf } else{ $member = Get-ADUser -Server $dcfqdn -Identity "$dist" $sammember = ($member).SamAccountName $upnmember = ($member).UserPrincipalName $activemember = ($member).Enabled Write-Host "UPN: $upnmember, SamAccountName: $sammember Status: $activemember" } } $inactiveusers ($inactiveusers).count #$inactiveusers = $null
Die Konsole gibt nun alle Benutzer aus, die die PowerShell entfernen würde
Mit der Variablen „$inactiveusers“ können alle inaktiven Gruppenmitglieder angezeigt werden. Wird das Script ein zweites Mal mit der gleichen Konsole ausgeführt werden die Benutzer angehängt. Um die Variable zu leeren kann die letzte Zeile „$inactiveusers = $null“ verwendet werden.
Mit „($inactiveusers).count“ können diese einfach gezählt werden.
Viel Erfolg beim bereinigen der lokalen AD Gruppen mit PowerShell. Wenn euch der Artikel gefallen hat, klickt bitte auf „Helpful“.