2015-12-01 58 views
0

我在Visual Basic 2015中编写了一个程序,我试图编写一个程序来查找用户所属的所有AD组并显示它们一个列表框。之后,我将包括将其导出到.csv文件的选项。我可以通过sAMAccountName或DN进行搜索,因为我定义了两个变量。我被困住了,我得到的只是空的搜索结果。任何帮助将不胜感激。查找vb.net用户的组群成员

Imports System.DirectoryServices 
Imports System.DirectoryServices.AccountManagement 
Public Class UserMembershipWin 
Private Sub queryAD_Click(sender As Object, e As RoutedEventArgs) Handles queryAD.Click 
    Dim username As String 
    username = usernameBox.Text 
    Dim emptybox 
    emptybox = usernameBox.Text.Length 
    If emptybox = 0 Then 
     errormsg.Content = "*Required field" 
    End If 
    If emptybox > 0 Then 
     Dim domain = New PrincipalContext(ContextType.Domain) 
     Dim user = UserPrincipal.FindByIdentity(domain, username) 
     Dim userDN 
     userDN = user.DistinguishedName 

     Dim ADEntry As New DirectoryEntry("LDAP://DC=domain,DC=com") 
     Dim Groups As New Collection 
     Dim mySearcher As DirectorySearcher = New DirectorySearcher(ADEntry) 
     Dim arrList As New ArrayList() 

     mySearcher.Filter = "(&(ObjectClass=User)(DN=" & userDN & "))" 
     mySearcher.PropertiesToLoad.Add("MemberOf") 

     Dim searchResults As SearchResultCollection = mySearcher.FindAll() 
     If searchResults.Count = 0 Then 
      errormsg.Content = "Invalid username" 
     End If 
     If searchResults.Count > 0 Then 
      Dim group As New DirectoryEntry(searchResults(0).Path) 
      For Each member As Object In group.Properties("MemberOf") 
       userlistbox.Items.Add(member) 
      Next 
     End If 
    End If 
End Sub 
End Class 

回答

0

我已经复制您的问题,并发现,通过改变以下线的搜索返回的值:如您还没有一个例子

mySearcher.Filter = "(&(ObjectClass=User)(distinguishedName=" & userDN & "))" 

我不知道有关与sAMAccountName赋的问题。

+0

谢谢!简单的错误,现在一切正常。但是,我得到的是群组的DN,而不是CN。有什么方法可以显示组的CN吗? – stewardson

+0

我相信你必须添加你想要检索的属性给搜索者。 –