PowerShell Techguy.at

Leere AD Gruppen mittels PowerShell ermitteln

PowerShellHeute ein nützliches Script welches euch alle leeren AD Gruppen ausgibt, damit könnt ihr mal euer AD bereinigen.

Ich habe das Script mal geschrieben, da wir bei einem Kunden das AD bereinigen sollten.

Es gibt hier noch mehr dieser Scripte, diese werde ich entweder n dieser Serie oder demnächst mal als Beitrag bringen.

Zuerst einmal holen wir uns alle AD Gruppen mit folgendem Kommando.

Das Script

Get-ADGroup -Filter *

Bei Get-ADGroup oder Get-ADUser gibt es ein besonderes Attribut, und zwar “-Filter” welches auch zwingend ist, dazu aber in einem anderen Beitrag mehr.

In unserem Fall erhalten wir alle AD Gruppen aus dem AD, was dann ungefähr so aussieht.

image

Wie ihr vielleicht schon wisst, werden bei einem Get- Aufruf nur eine handvoll Attribute angezeigt, unsere hier haben noch nichts mit den Mitgliedern zu tun, also müssen wir uns mal alle Attribute holen, das mit folgenden Kommando.

Get-ADGroup -Filter *  -Properties *

image

Jetzt bekommen wir alle Attribute zurück, und hier finden wir jetzt auch eines mit dem Namen “Members”. Dieses Attribut beinhaltet alle Mitglieder dieser Gruppen, auf das werden wir uns nun konzentrieren.

Da wir nun wissen welches Attribut für uns wichtig ist, starten wir folgendes Kommando

Get-ADGroup -Filter *  -Properties Members

image

Wie ihr sehen könnt, haben wir hier 2 Gruppen mit unterschiedlichen Werten. Nach einem kleinen Gegencheck im AD, ist die erste Gruppe “DMPRATrust” wirklich leer, als wollen wir nun alle Gruppen die beim Attribut “Members” den Wert “{}” haben, also Null.

wir können das mittels eine “Where” Abfrage erreichen, wir pipen also alle unsere Gruppen zu einer “Where” Abfrage welche uns das Ergebnis soweit filtert, das nur mehr noch Gruppen angezeigt werden welche bei dem Attribut “members” keinen Wert haben

Get-ADGroup -Filter *  -Properties Members  | where { -not $_.Members}

image

Das Ergebnis überzeugt, jetzt machen wir noch ein kleine Anpassung, und zwar möchten wir nur den Namen der Gruppe anzeigen, die anderen Attribute interessieren uns nicht. Das ganze funktioniert mit einem “Select” Befehl.

Hier das vollständige Kommando

Get-ADGroup -Filter *  -Properties Members  | where { -not $_.Members} | select Name

image

Ein Gegencheck

image

Somit habt ihr ein Script welches euch alle leeren AD Gruppen liefert.

Michael Seidl aka Techguy

Leave a Comment

Your email address will not be published. Required fields are marked *

*