我正在使用以下代码来获取我的域中组的成员:
Dim de As New DirectoryEntry("LDAP://" & GroupDN) For Each user As String In CType(de.Properties("member"), IEnumerable) GroupCollection.Add(Username, Username) Next
我的问题是,当GroupDN(组的可分辨名称)是" CN = Domain Users,CN = Users,DC = Mydomain,DC = local "时,For ... Each循环不执行,当我检查时手动使用属性语句,它的计数为零.这似乎适用于我的域中的每个其他组,但"域用户"组应该包含所有人,并且它似乎包含任何人.
我已经检查过,该组在我的Windows AD工具中正确列出了所有人.我有什么明显的遗漏吗?另外,有没有更好的方法来获得一个团体的所有成员?
除非您更改用户的主要组ID,否则该用户不会存储在Domain Users组的成员属性中,而是使用主要组ID设置为Domain Users RID来确定Domain Users中的成员身份.正常情况是Domain Users成员属性为空; 它需要您对默认的Active Directory实现进行一些更改,但事实并非如此.
Domain Users组使用基于用户的"主要组ID"的"计算"机制来确定成员资格,并且通常不将成员存储为多值链接属性.如果更改了用户的主要组,则他们在Domain Users组中的成员身份将写入该组的链接属性,并且不再计算.这适用于Windows 2000,并且对于Windows Server 2003没有更改.
参考