使用DirectorySearcher在AD搜索中包括主要组

时间:2017-10-18 15:14:08

标签: c# active-directory directoryservices

我需要获取C#应用程序中特定Active Directory组中所有用户和联系人的列表。使用哪个组是可变的,并使用配置文件进行更改。

由于System.DirectoryServices.AccountManagement无法处理联系人,我使用DirectoryServices API和LDAP查询。

我对DirectorySearcher使用以下过滤器:

"(&(memberof:1.2.840.113556.1.4.1941:=" + groupDN +")(objectClass=person))"

groupDN是源组的专有名称。

这适用于普通组,但应该可以将配置的组作为任何组,甚至“域用户”。由于我们的Domain Users组实际上没有成员,但用作主要组,因此当组为“Domain Users”时,上述过滤器返回0结果。

我知道您可以使用过滤器搜索主要群组成员资格:

(primaryGroupId=513)

但是这并不考虑与域用户类似的其他组(如果您愿意,则为“主要组”)。

是否有其他方法可以在搜索结果中包含主要群组成员?

1 个答案:

答案 0 :(得分:1)

primaryGroupId属性包含组SID的最后一部分(objectSid属性)。以下MS文章介绍了用于获取安全主体的主要组的技术:https://support.microsoft.com/en-us/help/297951/how-to-use-the-primarygroupid-attribute-to-find-the-primary-group-for

请注意,用于检索成员资格的链过滤器会从嵌套组返回用户,但在包含10K +用户的域上存在性能问题