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.

Frau Zu Zu
quelle

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.

Kodra
quelle
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.

Sigint
quelle
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