【问题标题】:When Searching Active Directory Groups Using PrincipalContext Certain UserPrincipal Properties are not Returned使用 PrincipalContext 搜索 Active Directory 组时,不返回某些 UserPrincipal 属性
【发布时间】:2018-07-27 18:25:51
【问题描述】:

我正在编写一个 C# 应用程序来显示用户提供的安全组中的用户。似乎我所有的测试用例都有效,除非我搜索“域用户”。当我这样做时,姓氏或 GivenName 都不会返回值。所有其他组返回这些值。我被难住了。

测试 1:域管理员

结果:所有 Surname 和 GivenName 显示在 GridView 中

测试 2:域用户

结果:没有显示姓氏或名字

注意:如果我将属性更改为任何其他 AD 用户属性,例如名称、SAM 等,所有这些都可以正常显示。

namespace adsearch
{
    public partial class frmViewGroupMembers : Form
    {
        private string group;
        private DataTable GroupMembers = new DataTable();

        public frmViewGroupMembers()
        {
            InitializeComponent();
        }

        public void ShowGroupMembers(string groupName) {
            GroupMembers.Columns.Add("Last Name");
            GroupMembers.Columns.Add("First Name");


            using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "mydomain.local")) {
                using (GroupPrincipal group = GroupPrincipal.FindByIdentity(context, groupName))
                {
                    foreach (UserPrincipal user in group.GetMembers(true).OfType<UserPrincipal>())
                    {
                        GroupMembers.Rows.Add(user.Surname, user.GivenName);
                    }                  
                }
            }

            dgvGroupMembers.DataSource = GroupMembers;
            dgvGroupMembers.Sort(dgvGroupMembers.Columns[0], ListSortDirection.Ascending);
            this.Show();
        }      
    }
}

【问题讨论】:

    标签: c# active-directory


    【解决方案1】:

    您是否检查过 Active Directory 以确认用户已填写必填字段?通常假设填写“显示名称”就足够了,但需要填写“名字”(GivenName)和“姓氏”(SurName)才能填充 GivenName 和 SurName。

    '

    【讨论】:

    • 感谢您的评论,是的,这些字段已填充。奇怪的是,所有其他安全组都显示正确,显示所有用户,但域用户为每个用户显示一个行项目,但不显示 Given 和 Surname。很奇怪。
    • 这是一个可以删除并重新创建的组吗?在过去 10 年左右的时间里,我们已经看到了 4-5 个组/用户损坏的实例,我们必须删除它们然后重新创建它们。到目前为止,它每次都有效。这可能是一个必须 100% 为您准备好的组,这将使如此激烈的步骤变得不可能,但如果您可以删除/重新创建它,它可能会解决问题。
    • 这是内置的域用户组。我最终把它放在了次要位置,并使用 PowerShell 命令来满足当前的需求,但在我弄清楚之前,这将是我大脑中的一个错误。下次有机会我必须处理它,我将打开用户对象属性以查看所有属性是否返回空白,或者只是偶然返回我想要的那些。
    • UserPrincipal 对象不公开“givenName”和“sn”(sur name)属性。看起来有,但实际上没有。看看使用 DirectorySearcher:stackoverflow.com/questions/9451618/directorysearcher-filter
    • 太棒了。我看过那门课,但我没有使用它是有原因的,但是在今天这样漫长的一天之后,我不记得为什么了,哈哈。我会看看,让你知道。如果这行得通,你就是救命稻草!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多