これにより、ユーザーがグループ "x" に属している ActiveDirectory からの 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
}
}