Получить информацию о пользователе из AD - C#
Формулировка задачи:
Доброго времени суток, коллеги!
Подскажите, пожалуйста как вытащить информацию о пользователе из Active Directory в List<User>?
Информация нужна следующая:
Я понимаю, что конкретная структура AD может быть различной, но всё же буду очень благодарен за конкретный пример кода из вашей практики.
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»
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;
}