При поиске в группах Active Directory с использованием PrincipalContext некоторые свойства UserPrincipal не возвращаются

Я пишу приложение С# для отображения пользователей в группе безопасности, предоставленной пользователем. Кажется, что все мои тестовые примеры работают, за исключением случаев, когда я ищу «Пользователи домена». Когда я это делаю, ни Surname, ни GivenName не возвращают значения. Все остальные группы возвращают эти значения. Я в тупике.

Тест 1: администраторы домена

Результаты: все фамилия и имя пользователя отображаются в 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();
        }      
    }
}

person ooomphlaa    schedule 27.07.2018    source источник


Ответы (1)


Вы проверили в Active Directory, чтобы убедиться, что пользователь заполнил обязательные поля? Часто предполагается, что достаточно заполнить «Отображаемое имя», но для заполнения «Имя» и «Фамилия» необходимо заполнить как «Имя» (Имя), так и «Фамилия».

введите здесь описание изображения

'

person Frank Ball    schedule 27.07.2018
comment
Спасибо за комментарий, да, эти поля заполнены. Что странно, так это то, что каждая другая группа безопасности отображается правильно со всеми отображаемыми пользователями, но пользователь домена показывает строку для каждого пользователя, но не показывает имя и фамилию. Это странно. - person ooomphlaa; 31.07.2018
comment
Это группа, которую вы можете удалить и создать заново? За последние 10 лет или около того мы видели 4-5 случаев, когда группа/пользователь были повреждены, и нам приходилось их удалять, а затем создавать заново. Это работало каждый раз до сих пор. Это может быть группа, которая должна быть на месте 100% времени для вас, что сделало бы такой радикальный шаг невозможным, но если вы можете удалить/создать ее заново, это может решить проблему. - person Frank Ball; 01.08.2018
comment
Это встроенная группа пользователей домена. В итоге я отложил это на задний план и использовал команды PowerShell для удовлетворения неотложных потребностей, но это будет ошибкой в ​​моем мозгу, пока я не разберусь с этим. В следующий раз, когда мне нужно поработать над этим, я собираюсь открыть свойства пользовательского объекта, чтобы увидеть, все ли свойства возвращаются пустыми или случайно, те, которые я хочу. - person ooomphlaa; 04.08.2018
comment
Объект UserPrincipal не предоставляет свойства namedName и sn (фамилия). Похоже, что да, но на самом деле это не так. Взгляните на использование DirectorySearcher: stackoverflow.com/questions/9451618/directorysearcher-filter - person Frank Ball; 07.08.2018
comment
Блестящий. Я видел этот урок, но была причина, по которой я им не пользовался, но после такого долгого дня, как сегодня, я не могу вспомнить почему, лол. Я посмотрю и дам вам знать. Если это сработает, вы спасете жизнь!!! - person ooomphlaa; 08.08.2018
comment
Я думал о вашем предложении, которое я попробую, но я могу видеть namedName и sn в других группах, но не в «Пользователях домена». Когда я запускаю свою программу, я могу посмотреть на любую другую группу, и она отображается правильно, вот что так странно. - person ooomphlaa; 09.08.2018