获取Active Directory组中的所有用户

时间:2010-05-25 23:02:14

标签: .net ldap

我正在使用以下代码示例获取指定AD组中所有用户的列表(在本例中为“Domain Users”组中的所有用户)。我列出的代码效果很好,但有一个例外:它不会返回将其主要组设置为“域用户”的用户。如何获取组中所有用户的列表,包括将其设置为主要组的用户?

Private Sub GetUsers()

    Dim groupSearcher As New DirectorySearcher
    Dim groupSearchRoot As New DirectoryEntry("LDAP://OU=Users,DC=domain,DC=com")

    With groupSearcher
        .SearchRoot = groupSearchRoot
        .Filter = "(&(ObjectClass=Group)(CN=Domain Users))"
    End With

    Dim members As Object
    members = groupSearcher.FindOne.GetDirectoryEntry.Invoke("Members", Nothing)

    For Each member As Object In CType(members, IEnumerable)
        Console.WriteLine(New DirectoryEntry(member).Name.Remove(0, 3))
    Next
End Sub

2 个答案:

答案 0 :(得分:4)

使用DirectoryServices.AccountManagement找到解决方案:

For Each group As GroupPrincipal In UserPrincipal.FindByIdentity(New PrincipalContext(ContextType.Domain, "domain.com"), IdentityType.SamAccountName, "userName").GetGroups()
    ' Do something with group name.
Next

答案 1 :(得分:0)

我正在寻找一种强有力的方法来做到这一点。如果您特别希望属于“Domain Admins”的用户,请查询primaryGroupID = 512的所有用户(512是一个众所周知的ID,表示“Domain Admins”)。