Member 12586674 Ответов: 1

Получить все подразделения в active directory в иерархическом порядке


Я хотел бы получить все подразделения в домене в иерархическом порядке и привязать его к древовидному представлению в MVC.

Что я уже пробовал:

Я попробовал ниже код, но он возвращает пустой.
Domain domain = Domain.GetDomain(new DirectoryContext(DirectoryContextType.Domain, "domainname", "username", "password"));
Forest forest = domain.Forest;
DomainCollection domains = forest.Domains;

Но если я использую этот код, я получаю список подразделений, но не так, как я хочу.
List<string> lstName = new List<string>();
            DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://DC=domainname,DC=com", "username", "password");
            DirectorySearcher oDirectorySearcher = new DirectorySearcher(directoryEntry,"(objectCategory=organizationalUnit)", null);

            SearchResultCollection oSearchResultCollection = oDirectorySearcher.FindAll();
            foreach (SearchResult item in oSearchResultCollection)
            {
                string name = item.Properties["name"][0].ToString();
                lstName.Add(name);
            }


Кто-нибудь может помочь?

Спасибо

Michael_Davies

Вы вводите реальное доменное имя, имена пользователей и пароли?

Member 12586674

Да. Я получаю список всех подразделений в формате List<string>.
Но я хочу, чтобы это было иерархически для древовидного представления.

Nelek

делать видимыми пользователей и пароли? за что же?

Member 12586674

Извините, но я не понял.

Nelek

Не берите в голову...

ZurdoDev

Ваши вопросы говорят, что он возвращается пустым. Теперь ты говоришь, что получаешь все. Что это?

Если вы получаете все подразделения, вам придется написать код для добавления узлов в treeview для каждого подразделения или написать код для преобразования его в иерархический источник данных. Насколько мне известно, нет никакого магического кода, который мог бы сделать это за тебя.

Member 12586674

Прости мою ошибку. Обновил свой вопрос.

#realJSOP

Что значит, вы хотите, чтобы все подразделения были в иерархическом порядке?

Member 12586674

Если у меня есть два основных подразделения в моем домене, скажем, OU1 и OU2. В подразделении 1 у меня есть дочерние OU11 и OU12. А под OU2 у меня есть OU21, OU22 и OU23.

Я хочу,чтобы они были в таком порядке,чтобы я мог привязать их к древовидному представлению, а не к списку, как OU1, OU12, OU21 и т. д.

1 Ответов

Рейтинг:
0

Dave Kreskowiak

В AD нет функции поиска или почти любой другой системы, которая возвращала бы иерархию. Вы должны построить его сами.

Получите элементы верхнего уровня, которые вы хотите, в корне вашего TreeView. Добавьте эти элементы и добавьте фиктивный элемент к каждому из них, чтобы рядом с ними появился маленький знак"+". Когда пользователь нажимает кнопку"+", чтобы развернуть этот узел, вы обрабатываете событие BeforeExpand. Там вы удаляете фиктивный узел, выполняете еще один запрос, чтобы получить нужные дочерние элементы из этого узла и добавить их в расширяемый узел. Опять же, заполните дочерние узлы одним фиктивным узлом, чтобы получить "+" к ним.

Вот и вся недолга.