Получение SAMAccountName из ActiveDirectory в VB.Net - PullRequest
0 голосов
/ 06 июня 2019

В моем приложении есть «Выбор аудитории», который позволяет вам искать группы и пользователей в Active Directory.Бит групп работает, но у меня проблема с битом пользователей.

Вот мой код:

Public Function GetGroups() As List(Of String)
    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.
    Dim result As New List(Of String)

    strPath = "LDAP://MYDOMAINCONTROLLER.MYDOMAIN"
        objADAM = New DirectoryEntry(strPath)
        objADAM.RefreshCache()

    Try
        objSearchADAM = New DirectorySearcher(objADAM)
        objSearchADAM.Filter = "(&(objectClass=" & AudienceSelector.searchtype.Text & ")(cn=" & AudienceSelector.TextBox1.Text & "))"
        objSearchADAM.SearchScope = SearchScope.Subtree
        If AudienceSelector.searchtype.Text = "user" Then
            objSearchADAM.PropertiesToLoad.Add("SAMAccountName")
        End If
        objSearchResults = objSearchADAM.FindAll()
    Catch e As Exception
    End Try

    Try
        If objSearchResults.Count <> 0 Then
            Dim objResult As SearchResult
            For Each objResult In objSearchResults
                objGroupEntry = objResult.GetDirectoryEntry
                result.Add(objGroupEntry.Name)
            Next objResult
        End If
    Catch e As Exception
    End Try
    Return result
End Function

Так что, если AudienceSelector.searchtype = user, списокпользователи возвращаются, но я получаю понятное имя и мне нужно имя SAMAccountName.Поэтому вместо 'john.smith' я получаю обратно 'John Smith'.

Я провел поиск и попытался добавить бит PropertiesToLoad, чтобы ввести SAMAcountName, но он просто дает мнедружеское имя каждый раз.

Кто-нибудь может увидеть, где я иду не так?

Заранее благодарен за любую помощь: -D

1 Ответ

0 голосов
/ 06 июня 2019

Мне нужно было захватить свойство, а не objGroupEntry.Name.

Простое утверждение if позже, и это ...

 Dim thisuserSAN As String = objGroupEntry.Properties("SamAccountName").Value.ToString.ToLower
                    result.Add(thisuserSAN)

... добилось цели:)

...