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

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

我试过以下方法:

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

还有这个:

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

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

373562 次浏览

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

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

如果你还没有这个著名的名字,你可以用以下方式搜索:

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

并返回属性 distinguishedName。大小写可能很重要。

对于 ActiveDirectory 用户来说,实现这一点的另一种方法是——假设所有组都存储在 OU=Groups,DC=CorpDir,DC=QA,DC=CorpName中——使用查询 (&(objectCategory=group)(CN=GroupCN))。这对于所有成员少于1500人的小组都很有效。如果您想列出一个大型 AD 组的所有成员,那么相同的查询将可以工作,但是您必须使用 远程检索来获取所有成员,每次1500条记录。

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

如果 DC 是 Win2k3SP2或更高版本,您可以使用如下代码:

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

获得嵌套的组成员。

资料来源: https://ldapwiki.com/wiki/Active%20Directory%20Group%20Related%20Searches

如果需要在几个组中进行搜索,则使用更复杂的查询:

(&(objectCategory=user)(|(memberOf=CN=GroupOne,OU=Security Groups,OU=Groups,DC=example,DC=com)(memberOf=CN=GroupTwo,OU=Security Groups,OU=Groups,DC=example,DC=com)(memberOf=CN=GroupThree,OU=Security Groups,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:=CN=GroupThree,OU=Security Groups,OU=Groups,DC=example,DC=com)))