LDAP Anfragen in PowerShell mit dem DirectorySearcher
Oft kommt es vor, dass Informationen über viele Nutzer im Active Directory abgefragt werden sollen.
Dies ist beispielsweise nötig, um per Skript die Nutzer einer bestimmten OU abzufragen, oder um Active Directory Attribute für alle Nutzer zu setzen.
Das .Net Framework bietet hierzu die Klasse „DirectorySearcher“, welche in allen .Net Sprachen, wie z.B. C# oder PowerShell verwendet werden kann.
Beachten Sie, dass dieses Skript lediglich die Basics des DirectorySearchers beinhaltet. Die Konfigurationsmöglichkeiten des DirectorySearchers können sehr komplex werden. Weitere Informationen finden Sie in der Dokumentation des DirectorySearchers. Ebenso findet in diesem Beispielskript keine Fehlerbehandlung statt. Im Produktivbetrieb sollte unbedingt auf eine korrekte Fehlerbehandlung Wert gelegt werden.
#Definiert den LDAP Suchpfad. In diesem Beispiel, alle Elemente in der Organisationseinheit "Studenten"
$OU = "LDAP://OU=Studenten,DC=contoso,DC=com"
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
#Setzt den LDAP Suchpfad auf das DirectorySearcher Objekt
$objSearcher.SearchRoot = New-Object System.DirectoryServices.DirectoryEntry($OU)
#Filtert die Suche nach Benutzern, also keine Gruppen oder Computer
$objSearcher.Filter = "(&(objectCategory=User))"
#Aktiviert die rekursive Suche in Sub-OUs
$objSearcher.SearchScope = "Subtree"
#Setzt die maximale Anzahl an zurückgegebenen Nutzern auf 10000 (Standard ist 2000)
$objSearcher.PageSize = 10000;
$users = $objSearcher.FindAll()
#Iteriert die gefundenen Nutzer und gibt für jeden Nutzer den Login-Namen aus
foreach ($u in $users){
$accountName = $u.Properties["samaccountname"]
write-host $accountName
}
Im Beispiel werden lediglich die Nutzernamen (SAM Account Name) ausgegeben. Weitere Active Directory Attribute können Sie hier nachlesen.
ALLE BLOG-KATEGORIEN
- ASP.NET
- Active Directory
- Administration Tools
- Allgemein
- Backup
- ChatBots
- Configuration Manager
- DNS
- Data Protection Manager
- Deployment
- Endpoint Protection
- Exchange Server
- Gruppenrichtlinien
- Hyper-V
- Intune
- Konferenz
- Künstliche Intelligenz
- Linux
- Microsoft Office
- Microsoft Teams
- Office 365
- Office Web App Server
- Powershell
- Remote Desktop Server
- Remote Server
- SQL Server
- Sharepoint Server
- Sicherheit
- System Center
- Training
- Verschlüsselung
- Virtual Machine Manager
- Visual Studio
- WSUS
- Windows 10
- Windows 8
- Windows Azure
- Windows Client
- Windows Server
- Windows Server 2012
- Windows Server 2012R2
- Windows Server 2016
- Windows Server 2019
- Windows Server 2022
- Zertifikate