查询以列出特定组的所有用户


78

如何使用搜索过滤器显示特定组的用户?

我尝试了以下方法:

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

还有这个:

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

但都不会显示特定组的用户。

Answers:


107

memberOf(在AD中)存储为专有名称列表。您的过滤器必须类似:

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

如果您还没有专有名称,可以使用以下命令进行搜索:

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

并返回属性distinguishedName。情况可能很重要。


6
通常,在Active Directory中,您有许多包含该结构的组织单位。组的默认根OU是“组”。cn = MyCustomGroup,ou = Groups,dc = subdomain,dc = domain,dc = com可能会为您工作。如果没有,我建议对您的组(&(objectCategory = group)(cn = MyCustomGroup))进行LDAP搜索,并在结果集中包含distinguishedName属性。这将告诉您确切要在其他查询中使用的字符串
Kodra 2012年

1
我按照您说的做了,但是使用以下命令却没有任何结果:(&(objectCategory = user)(memberOf = cn = SingleSignOn,ou = Groups,dc = tis,dc = eg,dc = ddd,DC = com) )
祖祖女士2012年

1
您是否尝试过搜索组以确保您拥有正确的DN?我的过滤器将是(&(objectCategory = group)(cn = SingleSignOn)),并且该属性将是“ distinguishedName”。确保您是从域的根目录搜索的,而不是从用户OU的根目录搜索的(如果您的过滤器仅用于用户,则可能要这样做)。您可以从该查询中获取distinguishedName,并将其直接插入您的用户查询中。
Kodra 2012年

ugg。我认为这是区分大小写的...似乎现在正在工作!!!:)) 谢谢!!!!!!!!!!!
祖祖女士2012年

我认为大小写不是问题,而是空格。
蒂莫西·冈萨雷斯

11

对于Active Directory用户,一种替代方法是-假设所有组都存储在其中OU=Groups,DC=CorpDir,DC=QA,DC=CorpName-以使用查询(&(objectCategory=group)(CN=GroupCN))。对于少于1500名成员的所有组,此方法都适用。如果要列出大型广告组的所有成员,则可以使用相同的查询,但是必须使用范围检索来一次获取1500条记录来获取所有成员。

执行远程检索的关键是使用以下语法在属性中指定范围:attribute; range = low-high。因此,要获取具有3000个成员的AD组的所有成员,请首先运行上面的查询,要求member;range=0-1499返回属性,然后再返回该member;range=1500-2999属性。


1
不要忘记指定(CN=GroupCN)。我尝试请求所有群组,直到我指定了该群组后它才起作用。您也可以在指定范围时使用星号:member;range=1500-*-效果也不错。
Stalinko '16

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.