Получить информацию о пользователе из AD - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, коллеги! Подскажите, пожалуйста как вытащить информацию о пользователе из Active Directory в List<User>? Информация нужна следующая:
 public class User
    {
        /// <summary>
        /// Active Directory Name 
        /// </summary>
        public string ADName { get; set; }
        /// <summary>
        /// Имя пользователя (загружается из AD)
        /// </summary>
        public string I { get; set; }
        /// <summary>
        /// Фамилия пользователя (загружается из AD)
        /// </summary>
        public string F { get; set; }
        /// <summary>
        /// Выводимое имя (загружается из AD)
        /// </summary>
        public string DisplayName { get; set; }
        /// <summary>
        /// EMail пользователя (загружается из AD)
        /// </summary>
        public string EMail { get; set; }
        /// <summary>
        /// Номер телефона пользователя (загружается из AD)
        /// </summary>
        public string NumberFull { get; set; }
        /// <summary>
        /// Мобильный номер пользователя (загружается из AD)
        /// </summary>
        public string MobileNumber { get; set; }
    }
Я понимаю, что конкретная структура AD может быть различной, но всё же буду очень благодарен за конкретный пример кода из вашей практики.

Решение задачи: «Получить информацию о пользователе из AD»

textual
Листинг программы
 public List<main_OrgStruct> ADOrgStructSync()
        {
            List<main_OrgStruct> res = new List<main_OrgStruct>();
 
            DirectoryEntry dir = new DirectoryEntry(" LDAP://intra.vostok.ru/OU=vostok_users,DC=intra,DC=vostok,DC=ru");
            DirectorySearcher search = new DirectorySearcher(dir);
 
            search.Filter = "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))";
 
            search.SearchScope = SearchScope.Subtree;
            try
            {
                foreach (SearchResult result in search.FindAll())
                {
                    var entry = result.GetDirectoryEntry();
 
                    res.Add(new main_OrgStruct()
                    {
                        ADName = entry.Properties["cn"].Value != null ? entry.Properties["cn"].Value.ToString() : "NoN",
                        DisplayName = entry.Properties["displayName"].Value != null ? entry.Properties["displayName"].Value.ToString() : "NoN",
                        I = entry.Properties["givenName"].Value != null ? entry.Properties["givenName"].Value.ToString() : "NoN",
                        F = entry.Properties["sn"].Value != null ? entry.Properties["sn"].Value.ToString() : "NoN",
                        EMail = entry.Properties["mail"].Value != null ? entry.Properties["mail"].Value.ToString() : "NoN",
                        MobileNumber = entry.Properties["mobile"].Value != null ? long.Parse(entry.Properties["mobile"].Value.ToString()) : 0,
                        NumberFull = entry.Properties["telephoneNumber"].Value != null ? long.Parse(entry.Properties["telephoneNumber"].Value.ToString()) : 0,
                    });
                }
            }
            catch (Exception e)
            {
                var ee = e.Message;
            }
 
            return res;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы