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