这给出了来自我们 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
}
}