Wer sich schnell einen Überblick über die Objektstruktur einer Active-Directory-Umgebung verschaffen möchte, kommt oft sehr weit mit der Information, in welchen OUs wie viele Objekte liegen. Diese Daten lassen sich mit der PowerShell recht schnell zusammentragen.
Das folgende Skript liest die OU-Struktur der Domäne aus und bringt sie in eine sortierbare und übersichtliche Form. Für jede OU zählt es dann, wie viele User-, Computer- und Gruppenobjekte sich dort befinden. Öffnet man das Ergebnis dann in Excel (oder einem vergleichbaren Programm), dann lässt es sich gut auswerten:
- Die OU-Liste ist alphabetisch geordnet nach der Spalte “canonicalName”, was die Anordnung der OUs logisch korrekt abbildet
- Die Spalte “Depth” gibt die OU-Ebene an, also die Verschachtelungstiefe
- Die Spalte “Structure” stellt den Namen der OU eingerückt dar, indem es eine Reihe Leerzeichen je nach Verschachtelungstiefe voranstellt. Das ist simpel, aber ausreichend, um die Hierarchie auch optisch zu erkennen.
- Die letzten drei Spalten geben an, wie viele “Users”, “Groups” und “Computers” es in der jeweiligen OU gibt.
Hier das Skript. Es ist recht kurz, daher einfach in einen Editor kopieren und ausführen.
'distinguishedName;name;canonicalName;Depth;Structure;Users;Groups;Computers' | Out-File OU-Objects.txt $OUs = Get-ADOrganizationalUnit -Filter * -Properties canonicalName | Sort-Object -Property canonicalName foreach ($OU in $OUs) { $DN = $OU.distinguishedName $Name = $OU.name $Path = $OU.canonicalName $Depth = @([regex]::Matches($Path, "/")).count $Structure = (' ' * ($Depth-1)) + $Name $Users = @(Get-ADUser -SearchBase "$DN" -SearchScope OneLevel -Filter *).count $Groups = @(Get-ADGroup -SearchBase "$DN" -SearchScope OneLevel -Filter *).count $Computers = @(Get-ADComputer -SearchBase "$DN" -SearchScope OneLevel -Filter *).count "$DN;$Name;$Path;$Depth;$Structure;$Users;$Groups;$Computers" | Out-File OU-Objects.txt -Append }
Hinweis: Das Skript erzeugt in großen Umgebungen u.U. eine hohe oder unerwartete Abfragelast: Es stellt pro OU drei recht umfassende Abfragen an Active Directory. Es kann daher sein, dass ein SIEM oder Monitoring-System verdächtige Aktivitäten meldet. Das Skript sollte in solchen Umgebungen nur in Abstimmung mit der Security-Administration ausgeführt werden. Gedacht ist es vor allem für überschaubare Domänen.
http://faq-o-matic.net/?p=8982