Как получить список отделов в Active Directory, используя C # - PullRequest
1 голос
/ 29 июня 2009

Какой самый простой способ запросить Active Directory, чтобы получить список строк с названиями отделов. Пример: «Финансы», «Маркетинг», «ИТ» и др. Мой случай - это активный каталог для предприятия с более чем 3000 пользователей.

1 Ответ

6 голосов
/ 29 июня 2009

Если вы хотите получить список объектов с возвращенным атрибутом Department, вы можете использовать DirectorySearcher в пространстве имен System.DirectoryServices.

Тогда ваш фильтр будет выглядеть примерно так:

ds.Filter = "(objectClass=user)";

и тогда вы можете указать поисковику просто загрузить атрибут отдела:

ds.PropertiesToLoad.Add("department");

Затем перечислить набор результатов:

SearchResultCollection results = ds.FindAll();

Затем добавьте каждое свойство отдела в словарь, чтобы получить все уникальные значения

 foreach (SearchResult result in results)
 {
   string dept = String.Empty;
   DirectoryEntry de = result.GetDirectoryEntry();
   if (de.Properties.Contains("department"))
   {
     dept = de.Properties["department"][0].ToString();
     if (!dict.ContainsKey(dept))
     {
       dict.Add(result.Properties["department"][0].ToString();
     }
  }
}


Кроме того, есть инструменты командной строки, которые предоставят вам эту информацию, такие как dsquery или adfind.

adfind -default -f "(objectclass=user)" department -list | sort

предоставит вам отсортированный список атрибутов отдела для всех пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...