2010-05-25 7 views
1

J'utilise l'exemple de code suivant pour obtenir une liste de tous les utilisateurs d'un groupe AD spécifié (dans ce cas, tous les utilisateurs du groupe "Utilisateurs du domaine"). Mon code répertorié fonctionne très bien, à une exception près: il ne renvoie pas les utilisateurs dont le groupe principal est défini sur "Utilisateurs du domaine". Comment puis-je obtenir une liste de tous les utilisateurs du groupe, y compris ceux qui l'ont défini comme groupe principal?Obtenir tous les utilisateurs dans un groupe Active Directory

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 

Répondre

4

Solution trouvée à l'aide DirectoryServices.AccountManagement à la place:

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

Je suis à la recherche d'un moyen robuste de faire cela aussi. Si vous voulez spécifiquement les utilisateurs qui font partie de "Domain Admins", interrogez tous les utilisateurs où primaryGroupID = 512 (512 est un ID bien connu qui signifie "Domain Admins").

Questions connexes