Abfrage, um alle Benutzer einer bestimmten Gruppe aufzulisten


78

Wie kann ich einen Suchfilter verwenden, um Benutzer einer bestimmten Gruppe anzuzeigen?

Ich habe folgendes versucht:

(&
    (objectCategory=user)
    (memberOf=MyCustomGroup)
)

und das:

(&
    (objectCategory=user)
    (memberOf=cn=SingleSignOn,ou=Groups,dc=tis,dc=eg,dc=ddd,D‌​C=com)
)   

Benutzer einer bestimmten Gruppe werden jedoch nicht angezeigt.

Antworten:


107

memberOf (in AD) wird als Liste von DistinguishedNames gespeichert. Ihr Filter muss ungefähr so ​​aussehen:

(&(objectCategory=user)(memberOf=cn=MyCustomGroup,ou=ouOfGroup,dc=subdomain,dc=domain,dc=com))

Wenn Sie den definierten Namen noch nicht haben, können Sie ihn suchen mit:

(&(objectCategory=group)(cn=myCustomGroup))

und geben Sie das Attribut zurück distinguishedName. Fall kann wichtig sein.


6
In der Regel verfügen Sie in Active Directory über eine Reihe von Organisationseinheiten, die die Struktur enthalten. Die Standard-Stamm-Organisationseinheit für Gruppen ist Gruppen. Es ist wahrscheinlich, dass cn = MyCustomGroup, ou = Groups, dc = Subdomain, dc = domain, dc = com für Sie funktionieren. Wenn dies nicht der Fall ist, würde ich empfehlen, eine LDAP-Suche für Ihre Gruppe (& (objectCategory = group) (cn = MyCustomGroup)) durchzuführen und das Attribut definedName in die Ergebnismenge aufzunehmen. Das wird Ihnen genau sagen, welche Zeichenfolge Sie in Ihrer anderen Abfrage verwenden sollen
— Kodra

1
Ich habe getan, was Sie gesagt haben, aber ich habe keine Ergebnisse mit folgendem Ergebnis erhalten: (& (objectCategory = user) (memberOf = cn = SingleSignOn, ou = Gruppen, dc = tis, dc = z. B. dc = ddd, DC = com) )
— Frau Zu Zu

1
Haben Sie versucht, nach Ihrer Gruppe zu suchen, um sicherzustellen, dass Sie den richtigen DN haben? Mein Filter wäre (& (objectCategory = group) (cn = SingleSignOn)) und die Eigenschaft wäre "DistinguishedName". Stellen Sie sicher, dass Sie vom Stammverzeichnis der Domäne aus suchen, nicht von der Benutzer-Organisationseinheit (was Sie möglicherweise tun, wenn Ihr Filter nur für Benutzer bestimmt ist). Sie können den DistinguishedName aus dieser Abfrage nehmen und direkt in Ihre Benutzerabfrage einfügen.
— Kodra

uugghhh. Ich denke, es war Groß- und Kleinschreibung zu beachten ... scheint jetzt zu funktionieren !!! :)) Vielen Dank!!!!!!!!!!!
— Frau Zu Zu

Ich denke nicht, dass Gehäuse das Problem ist, es ist das Leerzeichen.
— Timothy Gonzalez

11

Für Active Directory-Benutzer besteht eine alternative Möglichkeit darin OU=Groups,DC=CorpDir,DC=QA,DC=CorpName, die Abfrage zu verwenden, sofern alle Ihre Gruppen darin gespeichert sind (&(objectCategory=group)(CN=GroupCN)). Dies funktioniert gut für alle Gruppen mit weniger als 1500 Mitgliedern. Wenn Sie alle Mitglieder einer großen AD-Gruppe auflisten möchten, funktioniert dieselbe Abfrage, Sie müssen jedoch den Fernabruf verwenden , um alle Mitglieder mit jeweils 1500 Datensätzen abzurufen.

Der Schlüssel zum Durchführen von Fernabrufen besteht darin, den Bereich in den Attributen mithilfe dieser Syntax anzugeben: attribute; range = low-high . Um alle Mitglieder einer AD-Gruppe mit 3000 Mitgliedern abzurufen, führen Sie zuerst die obige Abfrage aus und fragen Sie nach dem zurückzugebenden member;range=0-1499Attribut und dann nach dem member;range=1500-2999Attribut.


1
Vergessen Sie nicht anzugeben (CN=GroupCN). Ich habe versucht, alle Gruppen anzufordern, und es hat nicht funktioniert, bis ich dies angegeben habe. Sie können auch ein Sternchen verwenden, wenn Sie den Bereich angeben: member;range=1500-*- Es funktioniert auch gut.
— Stalinko

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.