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

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

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

Доброго времени суток, коллеги! Подскажите, пожалуйста как вытащить информацию о пользователе из Active Directory в List<User>? Информация нужна следующая:
Листинг программы
  1. public class User
  2. {
  3. /// <summary>
  4. /// Active Directory Name
  5. /// </summary>
  6. public string ADName { get; set; }
  7. /// <summary>
  8. /// Имя пользователя (загружается из AD)
  9. /// </summary>
  10. public string I { get; set; }
  11. /// <summary>
  12. /// Фамилия пользователя (загружается из AD)
  13. /// </summary>
  14. public string F { get; set; }
  15. /// <summary>
  16. /// Выводимое имя (загружается из AD)
  17. /// </summary>
  18. public string DisplayName { get; set; }
  19. /// <summary>
  20. /// EMail пользователя (загружается из AD)
  21. /// </summary>
  22. public string EMail { get; set; }
  23. /// <summary>
  24. /// Номер телефона пользователя (загружается из AD)
  25. /// </summary>
  26. public string NumberFull { get; set; }
  27. /// <summary>
  28. /// Мобильный номер пользователя (загружается из AD)
  29. /// </summary>
  30. public string MobileNumber { get; set; }
  31. }
Я понимаю, что конкретная структура AD может быть различной, но всё же буду очень благодарен за конкретный пример кода из вашей практики.

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

textual
Листинг программы
  1.  public List<main_OrgStruct> ADOrgStructSync()
  2.         {
  3.             List<main_OrgStruct> res = new List<main_OrgStruct>();
  4.  
  5.             DirectoryEntry dir = new DirectoryEntry(" LDAP://intra.vostok.ru/OU=vostok_users,DC=intra,DC=vostok,DC=ru");
  6.             DirectorySearcher search = new DirectorySearcher(dir);
  7.  
  8.             search.Filter = "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))";
  9.  
  10.             search.SearchScope = SearchScope.Subtree;
  11.             try
  12.             {
  13.                 foreach (SearchResult result in search.FindAll())
  14.                 {
  15.                     var entry = result.GetDirectoryEntry();
  16.  
  17.                     res.Add(new main_OrgStruct()
  18.                     {
  19.                         ADName = entry.Properties["cn"].Value != null ? entry.Properties["cn"].Value.ToString() : "NoN",
  20.                         DisplayName = entry.Properties["displayName"].Value != null ? entry.Properties["displayName"].Value.ToString() : "NoN",
  21.                         I = entry.Properties["givenName"].Value != null ? entry.Properties["givenName"].Value.ToString() : "NoN",
  22.                         F = entry.Properties["sn"].Value != null ? entry.Properties["sn"].Value.ToString() : "NoN",
  23.                         EMail = entry.Properties["mail"].Value != null ? entry.Properties["mail"].Value.ToString() : "NoN",
  24.                         MobileNumber = entry.Properties["mobile"].Value != null ? long.Parse(entry.Properties["mobile"].Value.ToString()) : 0,
  25.                         NumberFull = entry.Properties["telephoneNumber"].Value != null ? long.Parse(entry.Properties["telephoneNumber"].Value.ToString()) : 0,
  26.                     });
  27.                 }
  28.             }
  29.             catch (Exception e)
  30.             {
  31.                 var ee = e.Message;
  32.             }
  33.  
  34.             return res;
  35.         }

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


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

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

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы