Liste des utilisateurs dans Active Directory spécifique du Groupe de Distribution

Je vais essayer d'obtenir une liste des utilisateurs et des propriétés relatives à l'utilisateur à partir de l'intérieur d'un groupe active directory.

Mise à jour:

Voici les deux méthodes actuellement j'ai:

    Dim adGroup As New DirectoryEntry("LDAP://CN=MyGroup,OU=Groups,OU=Accounts,OU=All,DC=domain,DC=com")
    Dim adMembers As Object
    Dim objUser As ActiveDirectoryUser
    Dim objUserList As New List(Of ActiveDirectoryUser)
    Dim directoryEntry As DirectoryEntry

    adMembers = adGroup.Invoke("Members", Nothing)

    For Each adMember As Object In CType(adMembers, IEnumerable)
        directoryEntry = New DirectoryEntry(adMember)
        objUser = New ActiveDirectoryUser

        objUser.UserId = directoryEntry.Properties.Item("sAMAccountName").Value.ToString()
        objUser.Contract = directoryEntry.Properties.Item("ou").Value.ToString()
        objUser.LastName = directoryEntry.Properties.Item("sn").Value.ToString()
        objUser.FirstName = directoryEntry.Properties.Item("givenName").Value.ToString()
        objUser.Email = directoryEntry.Properties.Item("mail").Value.ToString()

        objUserList.Add(objUser)
    Next

Le premier morceau, bien qu'il semble tout à fait inefficace. Mon utilisation de la mémoire grimpe et grimpe comme c'est l'exécution et je commençais à cette erreur, mais il semble que cela peut être résolu. La deuxième méthode:

    Dim results As SearchResultCollection
    Dim directoryEntry2 As New DirectoryEntry("LDAP://DC=domain,DC=com")
    Dim directorySearcher As New DirectorySearcher(directoryEntry2)
    directorySearcher.PageSize = 1000

    directorySearcher.Filter = "(&(objectCategory=person)" & _
                           "(objectClass=user)" & _
                           "(memberOf=CN=MyGroup,OU=Groups,OU=Accounts,OU=All,DC=domain,DC=com))"


    directorySearcher.PropertiesToLoad.Add("ou")
    directorySearcher.PropertiesToLoad.Add("sn")
    directorySearcher.PropertiesToLoad.Add("givenName")
    directorySearcher.PropertiesToLoad.Add("sAMAccountName")
    directorySearcher.PropertiesToLoad.Add("mail")

    results = directorySearcher.FindAll

Le résultat comte semble varier en fonction de chaque exécution de l'application que je trouve bizarre. Je ne suis pas sûr si c'est un moyen fiable d'obtenir les utilisateurs de dos ou si je dois modifier quelque chose sur ma recherche?

OriginalL'auteur Justin Helgerson | 2010-07-07