1

我试图在同一家公司的两个不同 Active Directory (AD) 域中获取组的所有成员。

为此,我首先从此处指定的 Active Directory 用户和计算机 (ADUC) 属性编辑器中获取每个组的完整专有名称 (DN) 。

第一组 DN 是:

*CN=first-group,OU=organization-unit-name,DC=first,DC=company,DC=com*

第二组DN是:

*CN=second-group,OU=$Customer,OU=one,OU=two,OU=three,OU=four,DC=second,DC=company,DC=com*

然后我在 C# 中使用以下两个 LDAP 查询过滤器(我也在 ADUC 中尝试过)。

对于域first.company.com第一组,我应用以下过滤器:

*(&(objectCategory=*)(memberOf=CN=first-group,OU=organization-unit-name,DC=first,DC=company,DC=com))*

我按预期得到 123 个结果/

对于域second.company.com第二组,我应用以下过滤器:

*(&(objectCategory=*)(memberof=second-group,OU=$Customer,OU=one,OU=two,OU=three,OU=four,DC=second,DC=company,DC=com))*

但是现在我只得到一个结果。我自己更详细。这不是预期的。

我确实知道通过在选择第二组后单击“成员”选项卡来在 ADUC 中找到预期结果的替代方法,但我需要一个 LDAP 过滤器来执行此操作,因为我想在 C# 中获取结果。

有人知道 $Customer 在做什么吗?美元在 LDAP 过滤器中的一般含义是什么?

我尝试了没有 Ou=$Customer 的过滤器,但它没有返回任何结果。

感谢您的帮助!

4

1 回答 1

0

有两个适用于 Microsoft Active Directory 的 LDAP 查询: 解析所有成员(包括嵌套)安全组(至少需要 Windows 2003 SP2)

(memberOf:1.2.840.113556.1.4.1941:=CN=GroupOne,OU=Security Groups,OU=Groups,DC=YOURDOMAIN,DC=NET) 

或仅检索用户:

(&(objectClass=user)(memberof:1.2.840.113556.1.4.1941:=CN=GroupOne,OU=Security Groups,OU=Groups,DC=YOURDOMAIN,DC=NET) 

如果您只想要直接成员,请从每个查询中删除“:1.2.840.113556.1.4.1941:”。

在 LDAP 过滤器中,$ 表示“$”。(即它只是一个字符)

于 2016-02-07T12:02:06.607 回答