我正在使用以下代码示例获取指定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
答案 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”)。