Как получить свойства для пользователя Active Directory, используя DirectorySearcher в VB.Net - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь получить адрес электронной почты для известного пользователя Active Directory, используя его идентификатор входа и метод DirectorySearcher.FindOne () в VB.Net, но я не смог получить никаких результатов.

Извините, но я новичок в VB.Net и не знаю, где я ошибаюсь.Я пытался использовать различные примеры, которые я нашел в сети, но все они находятся в C #.Мне удалось преобразовать код в VB, но я все еще не могу получить результаты, используя то, что я нашел.В последнем примере я нашел здесь !он использует метод FindAll () и помещает результаты в объект SearchResultCollection.Коллекция закончилась счетом 0, поэтому я попытался использовать метод FindOne () и попытался поместить результат в объект SearchResult.У меня это тоже не сработало.

Public Shared Sub RetrieveUser(ByVal username As String)
        Dim propUsername As String = "samaccountname"
        Dim propFirstName As String = "givenName"
        Dim propLastName As String = "sn"
        Dim propDisplayName As String = "cn"
        Dim propMail As String = "mail"
        Dim propGuid As String = "objectguid"
        Dim results As SearchResultCollection
        Dim result As SearchResult
        Dim directoryEntry As DirectoryEntry = New DirectoryEntry("LDAP_PATH", "DOMIAIN\USERNAME", "PASSWORD", AuthenticationTypes.ServerBind)

        Using directorySearcher As DirectorySearcher = New DirectorySearcher(directoryEntry)
            directorySearcher.PropertiesToLoad.Add(propUsername)
            directorySearcher.PropertiesToLoad.Add(propDisplayName)
            directorySearcher.PropertiesToLoad.Add(propFirstName)
            directorySearcher.PropertiesToLoad.Add(propLastName)
            directorySearcher.PropertiesToLoad.Add(propMail)
            directorySearcher.PropertiesToLoad.Add(propGuid)
            directorySearcher.Filter = String.Format("({0})", "&(objectClass=user)(cn=" & username & ")")
            directorySearcher.SearchScope = SearchScope.Subtree
            '    directorySearcher.SearchRoot.AuthenticationType = AuthenticationTypes.Secure
            directorySearcher.PageSize = 100

            'results = directorySearcher.FindAll()
            result = directorySearcher.FindOne()

            'For Each result In results

            If result.Properties.Contains(propUsername) Then
                Console.WriteLine("User Name: " & result.Properties(propUsername)(0))
            End If

            If result.Properties.Contains(propGuid) Then
                    Console.WriteLine("User GUID: " & BitConverter.ToString(CType(result.Properties(propGuid)(0), Byte())).Replace("-", String.Empty))
                End If

                If result.Properties.Contains(propMail) Then
                    Console.WriteLine("Mail ID: " & result.Properties(propMail)(0))
                End If

                If result.Properties.Contains(propDisplayName) Then
                    Console.WriteLine("DisplayName: " & result.Properties(propDisplayName)(0))
                End If
            'Next


            directorySearcher.Dispose()
            directoryEntry.Dispose()
        End Using
    End Sub
...