für einen täglichen Report suchte ich nach einer Möglichkeit einer schnellen LDAP Suche mit Powershell. Ich wollte folgenden Report automatisch erstellen:
Wie viele Benutzer sind schon migriert? (alle User mit bestimmter Eigenschaft)
Ich habe mit drei Varianten für eine schnelle Suche experimentiert, dass sind die Ergebnisse:
Index
3 Suchvarianten in PowerShell
Ich habe mehrere Lösungswege eingeschlagen, da ich mit den jeweils erzielten Ergebnissen nicht zufrieden war. Letztlich stellte sich die Lösung mit den System.DirectoryServices.Protocols als besonders schnell heraus. Zunächst aber eine Übersicht über die Lösungsvarianten und deren Ergebnisse. So habt Ihr einen grundlegenden Überblick. Im Anschluss stelle ich Euch alle 3 Varianten im Einzelnen vor:
LDAP Suche mit PowerShell – ADSI spart 50% Zeit
Die abzufragende Active Directory Domain befindet sich noch im Windows 2003 Betriebsmodus ist. Aus diesem Grund konnte ich leider nicht die Microsoft CmdLets für Active Directory nutzen. Deshalb begann ich mit den
Quest Active Directory CmdLets:
Die LDAP Suche mit PowerShell für 40.000 Benutzerkonten dauerte ca. 25 Minuten.
Da die Ausführung dieses Scripts meine letzte Handlung nach einem langen Migrationstag ist, sind 25 Minuten viel zu lang. Mein nächster Versuch war die Nutzung der
ADSI Schnittstelle mit dem „System.DirectoryServices.DirectorySearcher“ Objekt:
$MigratedUsers = $search.FindAll()
Das Ergebnis war eine schon deutliche schnellere Suche.
Leider dauerte diese auch 10-15 Minuten – ich war noch nicht zufrieden.
Schnelle LDAP Suche mit Find-LdapObject – 90% Zeit sparen
Eine kurze Nachfrage in der Entwicklungsabteilung (Danke Peter) brachte die „System.DirectoryServices.Protocols“ zu Tage. Hier der Link zur Microsoft Webseite.
Die Module müssen ggfs. heruntergeladen, lokal gespeichert und in der PowerShell geladen werden:
Import-Module „C:\S.DS.P.psm1“
Danach stehen neue CmdLets zur Verfügung, unter anderem
Find-LdapObject:
Mit Find-LdapObject dauerte die Suche nach 40.000 Benutzerkonten weniger als 2 Minuten
…ich war zufrieden 🙂
1 Comment
Leave your reply.