0

这给出了来自我们 ActiveDirectory 的用户主体列表,其中用户在组“x”中:

var domainContext = new PrincipalContext(ContextType.Domain);
var groupPrincipal = GroupPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, "x");

现在我将如何通过自定义属性过滤此列表中的用户?所有用户在自定义属性“建筑物”中都有一个条目,我希望该列表仅包含来自某个建筑物的用户。

解决方案

愚蠢的我...将成员从 groupPrincipal 转换为 DirectoryEntry,然后访问属性..

        foreach (var member in groupPrincipal.Members)
        {
            // maybe some try-catch ..
            System.DirectoryServices.DirectoryEntry i = (System.DirectoryServices.DirectoryEntry)member.GetUnderlyingObject();
            if (i.Properties["building"].Value.toString() == "NSA HQ")
            {
                // Do stuff here
            }

        }
4

1 回答 1

1

是的,您可以使用 member.GetUnderlyingObject()

var members = groupPrincipal.Members.Where(member=>(member.GetUnderlyingObject() as DirectoryEntry).Properties["building"].Value.ToString() == "NSA HQ");

正如在一批中检索 AD 自定义属性中指出的那样

于 2013-08-26T15:46:13.363 回答