Active directory 查询以列出某个组的所有用户

Active directory 查询以列出某个组的所有用户,active-directory,ldap,ldap-query,Active Directory,Ldap,Ldap Query,如何使用搜索筛选器显示特定组的用户 我尝试了以下方法: (& (objectCategory=user) (memberOf=MyCustomGroup) ) 这是: (& (objectCategory=user) (memberOf=cn=SingleSignOn,ou=Groups,dc=tis,dc=eg,dc=ddd,D‌​C=com) ) 但这两种方法都不显示特定组的用户。memberOf(在AD中)存储为一个区分名称列表。您

如何使用搜索筛选器显示特定组的用户

我尝试了以下方法:

(&
    (objectCategory=user)
    (memberOf=MyCustomGroup)
)
这是:

(&
    (objectCategory=user)
    (memberOf=cn=SingleSignOn,ou=Groups,dc=tis,dc=eg,dc=ddd,D‌​C=com)
)   
但这两种方法都不显示特定组的用户。

memberOf(在AD中)存储为一个区分名称列表。您的过滤器需要类似于:

(&(objectCategory=user)(memberOf=cn=MyCustomGroup,ou=ouOfGroup,dc=subdomain,dc=domain,dc=com))
如果您还没有可分辨名称,可以通过以下方式搜索:

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

并返回属性
discrimitedName
。具体情况可能很重要。

对于Active Directory用户,另一种方法是——假设所有组都存储在
OU=groups、DC=CorpDir、DC=QA、DC=CorpName
中——使用查询
(&(objectCategory=group)(CN=GroupCN))
。这将适用于所有成员少于1500人的小组。如果您想列出一个大型广告组的所有成员,同样的查询也可以,但是您必须使用来获取所有成员,每次1500条记录


执行范围检索的关键是使用以下语法指定属性中的范围:attribute;范围=低-高。因此,要获取一个拥有3000个成员的广告组的所有成员,首先运行上面的查询,询问
成员;范围=0-1499
要返回的属性,然后针对
成员返回;范围=1500-2999
属性。

如果DC为Win2k3 SP2或更高版本,则可以使用以下内容:

(&(objectCategory=user)(memberOf=cn=MyCustomGroup,ou=ouOfGroup,dc=subdomain,dc=domain,dc=com))
(&(objectCategory=user)(memberOf:1.2.840.113556.1.4.1941:=CN=GroupOne,OU=Security Groups,OU=Groups,DC=example,DC=com))

获取嵌套的组成员资格


来源:

如果您需要在多个组中搜索,则需要更复杂的查询:

(&(objectCategory=user)(memberOf=CN=GroupOne,OU=Security group,OU=Groups,DC=example,DC=com)(memberOf=CN=GroupTwo,OU=Security group,OU=Groups,DC=com)(memberOf=CN=GroupThree,OU=Security group,OU=Groups,DC=example,DC=com))

与递归相同的示例:


(&(objectCategory=user)(|(memberOf:1.2.840.113556.1.4.1941:=CN=GroupOne,OU=Security Groups,OU=Groups,DC=example,DC=com)(memberOf:1.2.840.113556.1.4.1941:=CN=GroupTwo,OU=Security Groups,OU=Groups,DC=example,DC=com)(memberOf:1.2.840.113556.1.4.1941:=Groups,OU=Groups,OU=example,DC=com)))

通常,在Active Directory中,您有许多组织单元包含该结构。组的默认根OU为“组”。cn=MyCustomGroup、ou=Groups、dc=subdomain、dc=domain、dc=com可能适合您。如果没有,我建议对您的组进行LDAP搜索(&(objectCategory=group)(cn=MyCustomGroup)),并在结果集中包含discrimitedName属性。这将告诉您在另一个查询中要使用什么字符串我按照您所说的做了,但我使用以下内容没有得到任何结果:(&(objectCategory=user)(memberOf=cn=SingleSignOn,ou=Groups,dc=tis,dc=eg,dc=ddd,dc=com))您是否尝试搜索您的组以确保拥有正确的DN?我的过滤器将是(&(objectCategory=group)(cn=SingleSignOn)),属性将是“discriminatedname”。确保您是从域的根目录进行搜索,而不是从用户OU进行搜索(如果您的筛选器仅针对用户,则可能会这样做)。您可以从该查询中获取DiscrimitedName,并将其直接插入到用户query.uugghh中。我认为它是区分大小写的。。。现在好像在工作!!!:)谢谢我不认为大小写是问题所在,而是空格。别忘了指定
(CN=GroupCN)
。我试图请求所有组,但直到我指定了这个,它才起作用。当指定范围时,也可以使用星号:
成员;range=1500-*
-它也很有效。有没有办法简化此查询?我只希望所有组CNs的所有成员都位于同一子路径中?例如,
memberOf=CN=*,OU=mygroups,OU=groups,DC=subdomain,DC=domain,DC=com