Tags: PowerShell, Active Directory
In Konzeptphasen oder gelegentlich bei der Wartung größerer AD-Strukturen will man sich einen Überblick über die Zahl der AD-Objekte verschaffen. Das funktioniert zwar mit Active Directory-Benutzer und -Computer, doch PowerShell ist flexibler. Dieser Beitrag zeigt Beispiele für User, Computer, 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 Organisationseinheit (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 Mitgliedschaften 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.
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.
Täglich Know-how für IT-Pros mit unserem Newsletter
Marcel Küppers arbeitet seit über 25 Jahren in der IT, aktuell als Team Leader, zuvor als Consultant und Infrastructure Architect unter anderem für den japanischen Konzern JTEKT/TOYODA mit Verantwortung über die Europastandorte Krefeld und Paris.
Darüber hinaus wirkte er als Berater im EU-Projekt-Team für alle Lokationen des Konzerns mit und ist spezialisiert auf hochverfügbare virtualisierte Microsoft-Umgebungen plus Hybrid Cloud Solutions.
Zertifizierungen: MS Specialist und MCTS für Hyper-V/SCVMM, MCSE, MCITP, MCSA. Zusätzlich zertifiziert für PRINCE2 Projektmanagementmethode.
Verwandte Beiträge
- Split-brain DNS in Active Directory einrichten
- AD-Konten mit DES- und RC4-Algorithmus für Kerberos-Verschlüsselung finden
- UserAccountControl: Sicherheitseinstellungen für AD-Konten prüfen und ändern
- Gruppen in Azure Active Directory mit PowerShell verwalten
- Wann haben Benutzer zuletzt ihr Passwort im Active Directory geändert?
Weitere Links