0

我在一个组织中,其 Active Directory 具有非常深的嵌套组结构。我想查询目录以从 Linux 机器递归查找组的用户成员。在 Windows 机器上,

dsget group "dn_of_group" -members -expand

完全按照我的意愿去做,而且做得很快。当我尝试通过 LDAP 获得相同的结果时

(memberOf:1.2.840.113556.1.4.1941:=dn_of_group)

查询需要将近一分钟才能运行。dsget是在后台使用 LDAP 还是使用其他方式来查询目录?如果是这样,我有什么办法也可以使用它吗?

编辑:澄清我需要作为用户的成员。

4

1 回答 1

0

带有System.DirectoryServices.AccountManagement命名空间的框架 3.5提供了一种递归搜索所有组并返回用户所属的组的方法。返回的集合还可能包括系统出于授权目的而将用户视为成员的其他组。

UserPrincipal.GetAuthorizationGroups()

此方法返回的组可能包括来自与主体不同的范围和存储的组。例如,如果主体是一个 AD DS 对象,其 DN 为“CN=SpecialGroups,DC=Fabrikam,DC=com,则返回的集可以包含属于“CN=NormalGroups,DC=Fabrikam,DC= com


在另一个方向,你有:

GroupPrincipal.GetMembers(bool recursive)

备注

于 2012-01-18T20:54:51.133 回答