Hallo zusammen,
ich komme gerade bei einer kleinen AD Auswertung über LDAP mittels Powershell nicht weiter.
Folgender Code liegt zu Grunde:
Verwendeter LDAP-Path: "LDAP://cn=<GRUPPE>,ou=<unterou1>,ou=<unterou2>,ou=<ou3>,dc=test,dc=domain,dc=de"
Das Attribut SearchRoot des ADSearchers liefert mir auch richtige, brauchbare Werte für die LDAP Abfrage zurück. Als Beispiel sind die Attribute CN, Member etc. alle richtig gefüllt. Allerdings wird anschließend kein Benutzer durch ADSearcher.FindAll in $AllUsers geschrieben. Die Variable bleibt komplett leer.
Nach meinem Verständnis müsste er doch alle Benutzer dieser Gruppe in die Variable $AllUsers schreiben, weil ich auch nichts filtere.
Bin für jede Hilfe dankbar.
Mittlerweile habe ich rausgefunden, dass mir mit der jetzigen Abfrage nur der Name der Gruppe zurückgegeben wird, nicht die User der Gruppe... daher war der Ansatz nicht der Beste.
Mit Hilfe des LDAP Filters kann man allerdings direkt das AD nach bestimmten Kriterien durchsuchen. Ich habe ein Beispiel für C# gefunden, indem mit folgenden Zeile bestimmt wird, dass nur nach Gruppen mit dem Namen 'group' gesucht werden soll.
Ich bekopmme es aber nicht in Powershell transferiert.
Jemand eine Idee?
Auch wenn ich einen Monolog halte hier die Lösung des Problems.
LDAP bietet bereits mit dem Filter gezielt die Möglichkeit auf eine bestimme Gruppe zu schauen. Nachfolgender Code funktioniert und liest alle User einer bestimmten Gruppe aus dem AD aus. Anschließend können für jeden User sämtliche Properties abgefragt werden, wie z.b DisplayName, Mail etc...
ich komme gerade bei einer kleinen AD Auswertung über LDAP mittels Powershell nicht weiter.
Folgender Code liegt zu Grunde:
Code:
$ADsearcher = New-Object System.DirectoryServices.DirectorySearcher
$ADsearcher.SearchRoot = New-Object System.DirectoryServices.DirectoryEntry($LdapPath)
$ADsearcher.Filter = "(objectClass=*)"
$allusers = $ADsearcher.findall()
Verwendeter LDAP-Path: "LDAP://cn=<GRUPPE>,ou=<unterou1>,ou=<unterou2>,ou=<ou3>,dc=test,dc=domain,dc=de"
Das Attribut SearchRoot des ADSearchers liefert mir auch richtige, brauchbare Werte für die LDAP Abfrage zurück. Als Beispiel sind die Attribute CN, Member etc. alle richtig gefüllt. Allerdings wird anschließend kein Benutzer durch ADSearcher.FindAll in $AllUsers geschrieben. Die Variable bleibt komplett leer.
Nach meinem Verständnis müsste er doch alle Benutzer dieser Gruppe in die Variable $AllUsers schreiben, weil ich auch nichts filtere.
Bin für jede Hilfe dankbar.
Ergänzung ()
Mittlerweile habe ich rausgefunden, dass mir mit der jetzigen Abfrage nur der Name der Gruppe zurückgegeben wird, nicht die User der Gruppe... daher war der Ansatz nicht der Beste.
Mit Hilfe des LDAP Filters kann man allerdings direkt das AD nach bestimmten Kriterien durchsuchen. Ich habe ein Beispiel für C# gefunden, indem mit folgenden Zeile bestimmt wird, dass nur nach Gruppen mit dem Namen 'group' gesucht werden soll.
Ich bekopmme es aber nicht in Powershell transferiert.
Code:
searcher.Filter = string.Format(@"(&(objectClass=group)(cn={0}))", group);
Jemand eine Idee?
Ergänzung ()
Auch wenn ich einen Monolog halte hier die Lösung des Problems.
LDAP bietet bereits mit dem Filter gezielt die Möglichkeit auf eine bestimme Gruppe zu schauen. Nachfolgender Code funktioniert und liest alle User einer bestimmten Gruppe aus dem AD aus. Anschließend können für jeden User sämtliche Properties abgefragt werden, wie z.b DisplayName, Mail etc...
Code:
$ADsearcher = New-Object System.DirectoryServices.DirectorySearcher
$ADsearcher.Filter = [string]::Format("(&(objectClass=group)(cn={0}))", "GROUPNAME" )
foreach($SearchResult in $ADsearcher.FindAll()) {
foreach($member in $SearchResult.Properties["member"]) {
$memberResult = New-Object System.DirectoryServices.DirectoryEntry([string]::Format("LDAP://{0}", $member))
Write-Host $memberResult.Properties["sAMAccountName"].value "-" $memberResult.Properties["mail"].value
}
}
Zuletzt bearbeitet: