【发布时间】:2016-06-13 07:15:48
【问题描述】:
我想只使用用户名从活动目录中获取名字和姓氏。下面的代码有效,但没有为没有姓氏的用户显示任何内容。我需要这个来只显示没有姓氏的人的名字。
有人知道吗?
Private Function GetActiveDirUserDetails(ByVal userid As String) As String
Dim dirEntry As System.DirectoryServices.DirectoryEntry
Dim dirSearcher As System.DirectoryServices.DirectorySearcher
Dim domainName As String = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName
Try
dirEntry = New System.DirectoryServices.DirectoryEntry("LDAP://" & domainName)
dirSearcher = New System.DirectoryServices.DirectorySearcher(dirEntry)
dirSearcher.Filter = "(samAccountName=" & userid & ")"
dirSearcher.PropertiesToLoad.Add("GivenName")
'Users e-mail address
dirSearcher.PropertiesToLoad.Add("sn")
'Users last name
Dim sr As SearchResult = dirSearcher.FindOne()
If sr Is Nothing Then 'return false if user isn't found
Return False
End If
Dim de As System.DirectoryServices.DirectoryEntry = sr.GetDirectoryEntry()
Dim userFirstLastName = de.Properties("sn").Value.ToString() + ", " + de.Properties("GivenName").Value.ToString()
Return userFirstLastName
Catch ex As Exception ' return false if exception occurs
Return ex.Message
End Try
End Function
编辑
我找到了解决方案,很简单。
Private Function GetActiveDirUserDetails(ByVal username As String) As String
Dim dirEntry As System.DirectoryServices.DirectoryEntry
Dim dirSearcher As System.DirectoryServices.DirectorySearcher
Try
dirEntry = New System.DirectoryServices.DirectoryEntry("LDAP://172.17.25.10:389/DC=bsidomain,DC=com")
dirSearcher = New System.DirectoryServices.DirectorySearcher(dirEntry)
dirSearcher.Filter = "(samAccountName=" & username & ")"
dirSearcher.PropertiesToLoad.Add("GivenName")
dirSearcher.PropertiesToLoad.Add("sn")
Dim sr As DirectoryServices.SearchResult = dirSearcher.FindOne()
If sr Is Nothing Then
Return False
End If
Dim de As System.DirectoryServices.DirectoryEntry = sr.GetDirectoryEntry()
Dim ObjFirstName As String = ""
Dim ObjLastName As String = String.Empty
Try
ObjFirstName = de.Properties("GivenName").Value.ToString()
ObjLastName = de.Properties("sn").Value.ToString()
Catch ex As Exception
ObjFirstName = de.Properties("DisplayName").Value.ToString()
End Try
MsgBox(ObjFirstName + ObjLastName)
Catch ex As Exception ' return false if exception occurs
Return ex.Message
End Try
End Function
【问题讨论】:
标签: vb.net active-directory ldap