Active Directory Powershell Report „aktiver“ und „inaktiver“ Objekte
Ich musste in der letzten Zeit häufiger einen Report der aktiven und inaktive Active Directory Objekte erstellen. Dazu habe ich ein kleines Powershell Skript erstellt welches einfach über LDAP Filter nach enabled bzw. disabled Usern und Computern sucht. Bei den Computern unterscheide ich noch nach Server- und Client-Betriebsystem. Da Gruppen nicht disabled sein können unterscheide ich hier nach Gruppen mit Mitgliedern und nach Gruppen ohne Mitgliedern. Ich habe bewusst nicht die Quest CDMLets verwendet, da die Suche mit „nativen“ Mitteln um einiges schneller und Resourcenschonender arbeitet.
Hier das fertige Powershell Script:
$searchRoot = „LDAP://DC=firstattribute,DC=de“
$searchRootDirEntry = New-Object System.DirectoryServices.DirectoryEntry($searchRoot)
$searcher = New-Object System.DirectoryServices.DirectorySearcher($searchRootDirEntry)
$searcher.PageSize = 1000
$searcher.SizeLimit = 0
Write-Host „Search results for domain : “ $searchRootDirEntry.name
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
Write-Host “ “
$searcher.Filter = „(&(objectClass=user)(objectCategory=person)(!useraccountcontrol:1.2.840.113556.1.4.803:=2))“
$results = $searcher.FindAll()
Write-Host “ Enabled User Accounts : “ $results.Count
$searcher.Filter = „(&(objectClass=user)(objectCategory=person)(useraccountcontrol:1.2.840.113556.1.4.803:=2))“
$results = $searcher.FindAll()
Write-Host “ Disabled User Accounts : “ $results.Count
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
Write-Host “ “
$searcher.Filter = „(&(objectClass=group)(objectCategory=group)(member=*))“
$results = $searcher.FindAll()
Write-Host “ Groups with member : “ $results.Count
$searcher.Filter = „(&(objectClass=group)(objectCategory=group)(!member=*))“
$results = $searcher.FindAll()
Write-Host “ Empty Groups : “ $results.Count
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
Write-Host “ “
$searcher.Filter = „(&(objectClass=computer)(objectCategory=computer)(operatingSystem=*server*)(!useraccountcontrol:1.2.840.113556.1.4.803:=2))“
$results = $searcher.FindAll()
Write-Host “ Enabled Servers : “ $results.Count
$searcher.Filter = „(&(objectClass=computer)(objectCategory=computer)(operatingSystem=*server*)(useraccountcontrol:1.2.840.113556.1.4.803:=2))“
$results = $searcher.FindAll()
Write-Host “ Disabled Servers : “ $results.Count
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
Write-Host “ “
$searcher.Filter = „(&(objectClass=computer)(objectCategory=computer)(!operatingSystem=*server*)(!useraccountcontrol:1.2.840.113556.1.4.803:=2))“
$results = $searcher.FindAll()
Write-Host “ Enabled Clients : “ $results.Count
$searcher.Filter = „(&(objectClass=computer)(objectCategory=computer)(!operatingSystem=*server*)(useraccountcontrol:1.2.840.113556.1.4.803:=2))“
$results = $searcher.FindAll()
Write-Host “ Disabled Clients : “ $results.Count
Leave a Reply
<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>