我需要从域MYDOMAIN.CC中的Active Directory获取属于某个组的所有User对象(让我们称之为“SourceGroup”)。这包括解析嵌套组(递归)。
我正在使用UserPrincipal和PrincipalContext来实现这一目标。 GetMember(true)自动解析组,并且工作正常。
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))//, url + ":3268"))
using (GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, groupName))
{
var users = grp.GetMembers(true)
.AsParallel()
.Select(member => PersonPrincipal.FindByIdentity(ctx, IdentityType.Guid, member.Guid.Value.ToString()))
.Where(user => user != null && userFilterFunction == null || userFilterFunction(user));
return users.ToList();
}
现在,当MYDOMAIN.CC的“SourceGroup”从其他域获得成员时,出现问题,即US.MYDOMAIN.CC。然后我更改了查询以搜索全局编录:
new PrincipalContext(ContextType.Domain, "MYDOMAIN.CC:3268"))
它现在适用于直接放入MYDOMAIN.CC \ SourceGroup的US.MYDOMAIN.CC用户。但问题是它现在忽略了嵌套组(它只返回直接在组上的用户)。
我有一种感觉,这可能是因为全球目录没有集团成员资格?有没有人知道一种方法,可以让我跨组域的小组成员?