IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#][ActiveDirectory] Lister les membres d'un groupe


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Par défaut [C#][ActiveDirectory] Lister les membres d'un groupe
    Bonjour à tous,

    J'arrive à lister les membres d'un groupe Active Directory à l'aide de ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    DirectoryEntry Ldap = new DirectoryEntry("LDAP://" + _domainActiveDirectory, _userAuthentification, _passwordAuthentification);
                    DirectorySearcher pathSearch = new DirectorySearcher(Ldap);
                    pathSearch.Filter = ("(&(objectClass=Group)(CN=" + nameGroup + "))");
                    SearchResult result = pathSearch.FindOne();
                    DirectoryEntry myGroup = new DirectoryEntry(result.Path);                
                    foreach (string unUser in myGroup.Properties["Member"])
                    {
                       _usersOfGroup.Add(unUser.ToString());
                    }
                    Ldap.Close();
    Mais voilà, j'ai deux problèmes.

    - Ce code me retourne aussi bien les ordinateurs du groupe que les utilisateurs. Comment faire pour séparer les deux et ainsi remplir deux Array List distinctes (_userOgGroup et _computersOfGroup) par exemple?

    - Ce code me retourne le nom des utilisateurs (Display Name) alors que je souhaiterais qu'il me retourne leur login (SAMAccountName) (car le Display Name n'est pas forcément unique dans l'annuaire). Comment faire ?


    Je vous remercie d'avance

    Ben

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161

  3. #3
    Membre confirmé
    Femme Profil pro
    Consultante informatique décisionnelle et bases de données
    Inscrit en
    Décembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultante informatique décisionnelle et bases de données

    Informations forums :
    Inscription : Décembre 2007
    Messages : 82
    Par défaut lien obsolète ?
    Je viens de cliquer sur le lien ci-dessus. A priori, il est obsolète.

    J'ai la même problèmatique que Ben et je ne sais comment récupérer le login.

    Anne

  4. #4
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 250
    Par défaut
    Salut !

    Peut être que tu y arriveras plus facilement en utilisant Linq To Active Directory

    http://linqtoad.codeplex.com/

  5. #5
    Membre confirmé
    Femme Profil pro
    Consultante informatique décisionnelle et bases de données
    Inscrit en
    Décembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultante informatique décisionnelle et bases de données

    Informations forums :
    Inscription : Décembre 2007
    Messages : 82
    Par défaut
    Merci Julien pour ta réponse.

    J'ai testé rapidement.
    J'ai bien le system.DirectoryServices de déclarer mais je ne trouve pas de 'directorySource' pourtant je travaille avec le Framework 3.5 sur vs2008...

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut
    Yop, voici une partie de code que j'avais fait y a 2 ans, c'était une méthode récursive qui permettait d'obtenir la liste des users dans un groupe et ses sous groupes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     
    public void GetMembres(DirectoryEntry de, ArrayList ListeMembres)
     {
                if (de.Properties.Contains("member"))
                {
                    foreach (string memb in de.Properties["member"])
                    {
                        string imb = memb;
                        if (!imb.Contains("LDAP://"))
                            imb = "LDAP://" + imb;
     
                        DirectoryEntry sde = new DirectoryEntry(imb);
                        if (sde.SchemaClassName.Equals("user"))
                        {
                            UtilisateurTemp user = SetUser(sde, "AI");
     
                            if (!ListeMembres.Contains(user))
                            {
                                ListeMembres.Add(user);
                            }
                        }
                        else if (sde.SchemaClassName.Equals("group"))
                        {
                            GetMembres(sde, ListeMembres);
                        }
                    }
            }
    }
    Dans ton cas, as tu tester le SchemaClassName du DirectoryEntry ?

Discussions similaires

  1. Lister les membres des groupes AD
    Par Firenight dans le forum VBScript
    Réponses: 1
    Dernier message: 10/06/2010, 11h11
  2. Vbs AD Lister les membres de groupe imbriqué
    Par vikingraver dans le forum VBScript
    Réponses: 2
    Dernier message: 16/11/2009, 15h54
  3. Lister les users d'un groupe dans ActiveDirectory
    Par l0quito dans le forum VB.NET
    Réponses: 2
    Dernier message: 29/09/2009, 15h32
  4. Lister les membres d'un groupe active directory
    Par Ludo75 dans le forum VBScript
    Réponses: 1
    Dernier message: 18/06/2008, 18h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo