82

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

我尝试了以下方法:

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

和这个:

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

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

4

4 回答 4

120

memberOf(在 AD 中)存储为 distinctNames 列表。您的过滤器需要类似于:

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

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

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

并返回属性distinguishedName。案件可能很重要。

于 2012-03-27T13:05:02.960 回答
12

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

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

于 2016-06-08T20:23:16.110 回答
3

如果 DC 是 Win2k3 SP2 或更高版本,您可以使用类似:

(&(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

于 2019-05-30T20:28:47.690 回答
-1

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

(&(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)))

于 2021-02-20T14:39:28.550 回答