按属性筛选用户

本文关键字:用户 筛选 属性 | 更新日期: 2023-09-27 18:29:01

这提供了ActiveDirectory中用户所在组"x"中的UserPrincipals的列表:

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

现在,我该如何通过自定义属性筛选此列表中的用户?所有用户都在自定义属性"Building"中有一个条目,我希望该列表只包含来自某个建筑的用户。

解决方案

愚蠢的我。。。将成员从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
            }
        }

按属性筛选用户

是的,您可以使用成员。GetUnderlyingObject()

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

如检索一批中的AD自定义属性

中所述