Наша компания использует ActiveDirectory по различным причинам. Один из них - обрабатывать контакты Outlook и идентификаторы входа пользователя.
Я написал программу для обнаружения зарегистрированного идентификатора пользователя и для поиска в Active Directory с использованием извлеченного идентификатора входа. Извлеченная информация из Active Directory затем сохраняется в базе данных.
Вот код, который я использовал для вывода информационных данных ActiveDirectory:
Dim enTry As DirectoryEntry = _
New DirectoryEntry("LDAP://myCOMPANY/DC=myCOMPANY,DC=myCOMPANY,DC=com")
Dim mySearcher As DirectorySearcher = New DirectorySearcher(enTry)
mySearcher.Filter = "(&(objectClass=user)(anr=" & thisUser & "))"
'thisUser is the variable holding the Windows ID that is accessing the ASPX page
mySearcher.PropertiesToLoad.Add("employeeID") 'just in case I need to do this.
Dim resEnt As SearchResult
Try
For Each resEnt In mySearcher.FindAll()
Dim fullname As String = resEnt.GetDirectoryEntry.Properties.Item("cn").Value
'fullname will always pull the right information
Dim e_id As String = resEnt.GetDirectoryEntry.Properties.Item("employeeID").Value
'e_id will sometimes be NOTHING, sometimes will contain an ID that
' is different from the one displayed in Outlook Contact Information
' and sometimes it will be matching the employeeID listed in Outlook info
Catch ex as Exception
Log("Failed to pull AD data: " & ex.Message)
End Try
По какой-то причине некоторые пользователи не имеют значений для своего поля employeeID, а некоторые имеют.
Тем не менее, все пользователи будут отображать значение employeeID при просмотре в Outlook.
Я разработал следующее изображение, чтобы помочь вам понять, что я переживаю. Изображение разделено на две части, раздел для каждого CASE.
=============================================== =========
В случае 1 сотрудник выполнил вход в Windows с помощью своего идентификатора: xms33808
Outlook показывает, что его идентификатор сотрудника 16078
Outlook показывает, что его псевдоним электронной почты xms33808
Командное окно ASP.Net показывает, что его employeeID xms33808
, что не соответствует действительности
=============================================== =======
=============================================== ========
В случае 2 сотрудник подключился к Windows с помощью ID: 25163
Outlook показывает, что его идентификатор сотрудника 25163
Outlook показывает, что его псевдоним электронной почты MutawaAAB
Окно командной строки ASP.Net показывает, что его employeeID NOTHING
.
=============================================== ========
Мой вопрос: как я могу извлечь ту же самую информацию о значении employeeID, которую отображает Outlook?