Active Directory - как получить все записи схемы для пользователя - PullRequest
0 голосов
/ 12 октября 2009

Я хочу разработать приложение для справочника персонала, в котором будут перечислены все сотрудники организации, включая имя, адрес электронной почты, номер телефона, местонахождение офиса - всю эту информацию. В настоящее время у нас это есть в Active Directory, и я хочу разработать простое приложение .Net, которое позволит людям искать и получать его. Получение информации оказалось простым - существует множество примеров использования класса DirectorySearcher. Я начинаю с

    Dim objADAM As DirectoryEntry                   ' Binding object.
    Dim objGroupEntry As DirectoryEntry             ' Group Results.
    Dim objSearchADAM As DirectorySearcher          ' Search object.
    Dim objSearchResults As SearchResultCollection  ' Results collection.
    Dim strPath As String                           ' Binding path.

    objADAM = New DirectoryEntry(strPath)
    objADAM.RefreshCache()
    objSearchADAM = New DirectorySearcher(objADAM)
    objSearchADAM.Filter = "((&(objectClass=user)(objectCategory=person)))"
    objSearchADAM.SearchScope = SearchScope.Subtree
    objSearchResults = objSearchADAM.FindAll()

Затем у меня есть для каждого цикла для каждого объекта SearchResult в наборе objSearchResults.

            If objSearchResults.Count <> 0 Then
            Dim objResult As SearchResult
            For Each objResult In objSearchResults
                objGroupEntry = objResult.GetDirectoryEntry

Я также рассмотрел все свойства записи каталога - основные свойства есть, но если я использую Active Directory Explorer для просмотра реального пользовательского объекта, в списке будет еще много атрибутов. Есть ли в Active Directory более сложная структура, которая означает, что мне нужно сделать больше, чем простой метод FindAll для DirectorySearcher?

Спасибо ...

Ответы [ 4 ]

2 голосов
/ 12 октября 2009

Когда вы используете DirectorySearcher, вы должны указать, какие именно свойства вы хотите загрузить (PropertiesToLoad). Когда я манипулировал большими кусками данных AD, для меня было более полезным сделать экземпляр DirectoryEntry проблемным с ADPath. если вы сделаете это, вы можете подключить свойства для себя.

также было довольно удобно использовать инструмент редактирования ADSI (я думаю, что он от Microsoft). это позволяет вам видеть все возможные записи в узле AD.

если вам нужна дополнительная информация, просто дайте более точный вопрос, я постараюсь ответить. потратил некоторое время на изучение этой темы:))

1 голос
/ 12 октября 2009

Зайдите в Management Studio и нажмите на папку объектов сервера. Затем перейдите к связанным серверам и добавьте «Новый связанный сервер». Здесь вам потребуется вся ваша информация, такая как логин локального сервера для сопоставлений логина удаленного сервера. Например, вы можете использовать учетную запись домена здесь.

Возможно, вы захотите дать вашему связанному серверу имя, например, ADSI или как угодно. Установив этот связанный сервер, вы можете писать запросы к этим данным, включая запросы SELECT или INSERT, для передачи этих данных AD в ваши собственные бизнес-объекты / таблицы.

Например, вот пример запроса для всех пользователей AD:

 SELECT 
                *
                 FROM 
                    OPENQUERY(ADSI, 
                                   '<LDAP://YourDomainControllerGoesHere/DC=YourDomain,DC=YourDCGoesHere>;(&(objectCategory=Person)(objectClass=user)( !(userAccountControl:1.2.840.113556.1.4.803:=2)));name, sAMAccountName,userAccountControl,
                                   telephoneNumber,mobile, facsimileTelephoneNumber, mail, employeeNumber, department, company, manager, title, versionNumber, adspath, displayname, sn, comment, givenName;subtree') 
                    Rowset_1

Вы захотите поработать с сетевыми администраторами, если не знаете, что происходит после LDAP: //, а также с вашим DC. После этого запустите запрос, и вы получите имена пользователей, адреса электронной почты, номера телефонов и т. Д. Непосредственно из AD.

0 голосов
/ 13 октября 2009

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

0 голосов
/ 12 октября 2009

Ребята, вы работаете с SQL Server?

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

Дайте мне знать

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