Objekte im Active Directory mit PowerShell zählen

    AD-Objekte mit PowerShell zählenIn Konzept­phasen oder gelegent­lich bei der Wartung größerer AD-Strukturen will man sich einen Überblick über die Zahl der AD-Objekte verschaffen. Das funk­tioniert zwar mit Active Directory-Benutzer und -Computer, doch Power­Shell ist flexibler. Dieser Bei­trag zeigt Beispiele für User, Com­puter, OUs und Gruppen.

    Große und vielleicht international verteilte AD-Infrastrukturen mit mehr als 10.000 Usern sind meist nur mühsam zu überblicken. Das gilt besonders am Anfang eines AD-bezogenen Projekts. Um sich einen ersten Eindruck zu verschaffen, macht es Sinn, die Benutzer oder Computer der verschiedenen OUs zu zählen. Dabei kann man mit PowerShell direkt auch aktive und deaktivierte Objekte filtern.

    Benutzer- und Computer-Objekte zählen

    Einen einfachen Einstieg erlauben Get-ADUser oder Get-ADComputer inklusive Filter, bezogen auf den Distinguished Name (DN). Meine Domäne heißt hier kueppers.lab und die gefilterte Organisations­einheit (OU) OU2:

    (Get-ADUser -Filter * -SearchBase "ou=OU2,dc=kueppers,dc=lab").count

    Count enthält die Zahl der Objekte, der Wert dieser Eigenschaft erscheint auf der Konsole. Folgendes Beispiel gibt die Zahl der Computer-Objekte in der OU OU2 aus:

    (Get-ADComputer -Filter * -SearchBase "ou=OU2,dc=kueppers,dc=lab").count

    Aktive Benutzer- und Computer-Objekte zählen

    Die Aufgabenstellung kann aber auch lauten: Zähle alle aktiven Objekte in einer bestimmten Domäne und OU. Folgendes Kommando liefert hier die entsprechenden Ergebnisse für Benutzerkonten:

    (Get-ADUser -Filter * -SearchBase "ou=OU2,dc=kueppers,dc=lab" |
      where {$_.enabled -eq $true}).count

    Analog dazu der Befehl für Computer-Konten:

    (Get-ADComputer -Filter * -SearchBase "ou=OU2,dc=kueppers,dc=lab" |
      where {$_.enabled -eq $true}).count

    Deaktivierte Benutzer- und Computer-Objekte filtern

    Doch nicht nur aktive Konten sind interessant, auch deaktivierte AD-User herauszufiltern kann Sinn machen. Dafür setzen wir enabled -eq (equal) gleich $false:

    (Get-ADUser -Filter * -SearchBase "ou=OU2,dc=kueppers,dc=lab" |
      where {$_.enabled -eq $false}).count

    Auch dazu ein Pendant für die Computer-Objekte:

    (Get-ADComputer -Filter * -SearchBase "ou=OU2,dc=kueppers,dc=lab" |
      where {$_.enabled -eq $false}).count

    Gruppen-Mitglieder zählen

    Vielleicht möchte man zusätzlich auch die Mitglieder einzelner AD-Gruppen zählen. Um die genaue Zahl der Mitglied­schaften auszugeben, nutzt man das Cmdlet Get-ADGroupMember:

    (Get-ADGroupMember -Identity "DEGLG-Admin").count

    PowerShell-Script zur automatisierten Zählung

    Anstatt Objekte unter allen möglichen Kriterien über einzelne Kommandos zu zählen, kann man die Abfragen in einem Script zusammenfassen und damit einen Report generieren.

    Struktur der Domäne kueppers.lab, auf der das folgende Script aufbaut

    Folgendes Beispiel durchläuft alle OUs auf der ersten Ebene einer Domäne, prüft für jede von ihnen, ob sie OUs mit dem Namen desktops, notebooks oder user enthält und zählt die jeweils darin enthaltenen Objekte:

    Bei einer umfangreichen Menge von Servern und verteilten Data Center, lässt sich das Script einfach um die Kategorie Server erweitern.

    Keine Kommentare