2009-06-28 1 views
1

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

ответ

6

Предполагая, что вы просто хотите получить список объектов с возвращенным атрибутом отдела, вы можете использовать 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 

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

+0

adfind является частью «Средства удаленного администрирования сервера (RSAT) для операционных систем Windows» https://support.microsoft.com/en-us/kb/2693643. Бесплатное ПО обеспечивает улучшенную версию этих инструментов http://www.joeware.net/freetools/ – BiLaL

Смежные вопросы