通过 c#/.Net 从 AD 中检索特定用户详细信息

Retrieving specific user details from AD via c#/.Net

我正在尝试为特定广告组中的用户检索 SamAccountNameSurnameGivenName 使用:

        PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);
        GroupPrincipal group = GroupPrincipal.FindByIdentity(principalContext, adgroup);

        foreach (Principal principal in group.Members)
        {
            samName = principal.SamAccountName;
            surName = principal.SurName;   <-- Intellisense gives error
            givenName = principal.GivenName;   <-- Intellisense gives error
        }

当我逐步执行代码并在 Visual Studio 中添加监视时,它们显示了正确的信息,但是 principal.Surnameprincipal.GivenName 在编译时给出了以下错误:

'Principal' 不包含“____”的定义,也找不到扩展方法

谁能解释一下为什么我在 IDE 中使用代码破解并悬停在 principal 变量上时可以看到信息,但无法访问代码中的属性?

根据 docs

SurNameGivenName 不是 public 类型 Principal 的属性

看起来您需要 UserPrincipal class 来公开这些属性,请参阅 UserPrincipal documentation

我现在无法100%验证,但我想如果你改变

foreach (Principal principal in group.Members)

foreach (UserPrincipal principal in group.Members)

它应该有效

校长 class 没有 属性 姓氏或名字 https://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.principal(v=vs.110).aspx