使用PrincipalContext搜索Active Directory组时,不会返回某些UserPrincipal属性

时间:2018-07-27 18:25:52

标签: c# active-directory

我正在编写一个C#应用程序以显示用户提供的安全组中的用户。除了我搜索“域用户”时,似乎所有测试用例都可以正常工作。当我不做时,Surname或GivenName都不会返回值。所有其他组均返回这些值。我很困惑。

测试1:域管理员

结果:GridView中显示所有姓氏和GivenName

测试2:域用户

结果:未显示姓氏或指定名字

注意:如果我将属性更改为其他任何AD用户属性,例如Name,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();
        }      
    }
}

1 个答案:

答案 0 :(得分:0)

您是否已在Active Directory中签入以确认用户已填写必填字段?通常会假设填写“显示名称”就足够了,但是要填充GivenName和SurName,都必须同时填写“名字”(GivenName)和“姓氏”(SurName)。

enter image description here

'