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 :

Filtre active directory


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 71
    Points : 41
    Points
    41
    Par défaut Filtre active directory
    Bonjour tout le monde,

    voila, je cherche le filtre correspondant afin de lister les Users d'une unité d'organisation spécifique dans une treeview. Par exemple j'ai une unité d'organisation "Users1" et je souhaite recuperer tous les utilisateurs de cette OU uniquement....
    un bout de mon code ressemblerait a ca (avec couleur ) :

    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
    private void addUserToTreeView(TreeNode userTreeNode, DirectoryEntry adConnection)
            {
                try
                {
                    userTreeNode.Nodes.Clear();
                    DirectorySearcher search = new DirectorySearcher(adConnection);
                    DirectoryEntry d = null;
                    string tmp = String.Empty;
                    search.Filter = "(&(objectCategory=user)(ou=" + userTreeNode.Text + "))";
    
                    foreach (SearchResult result in search.FindAll())
                    {
                        d = result.GetDirectoryEntry();
                        userTreeNode.Nodes.Add(d.Name);
                    }
                } 
                catch {}
            }
    le filtre (selectionné en rouge) ne fonctionne pas...une idée svp ?

    Merci

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Comment sais-tu qu'il ne fonctionne pas ? Tu as trop/plus de résultats que prévu ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Thomas Lebrun
    Comment sais-tu qu'il ne fonctionne pas ? Tu as trop/plus de résultats que prévu ?
    non, je n'ai aucun resultat...et quand je test un autre filtre (par ex : search.Filter = "(objectClass=user)") alors la, il m'affiche bien un resultat ressemblant a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    |-OU_1
        |-User_1
        |-User_2
        |-User_3
    |-OU_2
        |-User_1
        |-User_2
        |-User_3
    sauf que User_1/2/3 appartiennent a tous les OU de mon domaine

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Si tu affiches ton filtre, tu as bien la bonne syntaxe ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Thomas Lebrun
    Si tu affiches ton filtre, tu as bien la bonne syntaxe ?
    Qu'entends tu par afficher mon filtre ? tu veux dire afficher par exemple avec une MessageBox ?
    comme par exemple MessageBox.Show(search.Filter);

    le probleme en fait est, comme tu le dis, de savoir si la syntaxe de mon filtre "(&(objectCategory=user)(ou=nom_de_mon_OU))" est bonne ou pas
    j'ai fouillé dans la msdn de visual studio, mais je n'ai trouvé aucun exemple de filtre correspondant a ce que je veux ( <-- desespéré )

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par dim971
    Qu'entends tu par afficher mon filtre ? tu veux dire afficher par exemple avec une MessageBox ?
    comme par exemple MessageBox.Show(search.Filter);
    Oui, c'est ce que je veux dire

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Thomas Lebrun
    Oui, c'est ce que je veux dire

    Eh bien quand j'affiche mon filtre, j'ai la syntaxe à laquelle je m'attend, mais apres, savoir si c'est la bonne ou pas...je n'en ai aucune idée :s d'ailleurs avant de me poser la question de savoir quel filtre utiliser, peut etre que je devrais me demander si ce que je souhaite faire est possible ( <-- de plus en plus desespéré...)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    toujours personne pour une piste ?

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Heu là, je vois pas, désolé

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    bon alors voila, je viens de me rendre compte que j'avais un raisonnement faux depuis le debut lol...(grosse perte de temps). En fait je voulais lister tous les users, computers, OU et sous-OU dans une treeview...tout ca en itératif (<-- la honte) alors qu'en fait il suffisait juste de raisonner par récursivité

    Bon j'ai pas encore résolu totalement mon probleme, donc je ne peux pas vous faire partager encore mon code, mais quand je l'aurais trouvé je le post

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    Bon alors ca y est, j'ai finalement résolu mon probleme comme suis (bon c fait a l'arrache, je dois encore l'optimiser, mais le principe y est ):
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    // Procedure d'appel à ma procédure récursive
    public void AfficheTreeView(DirectoryEntry ConnectionAD)
            {
                MonTreeView.Nodes.Clear(); // On efface tous les elements du treeview
                TreeNode objTreeNode = new TreeNode(ConnectionAD.Name); 
                DirectorySearcher search = new DirectorySearcher(ConnectionAD);
                search.Filter = "(objectClass=organizationalUnit)"; //On cherche tous les OU
                search.SearchScope = SearchScope.OneLevel;// On parcours tous les OU de 1er niveau
     
                foreach (SearchResult result in search.FindAll()) // Début du parcourt
                {
                    DirectoryEntry d = result.GetDirectoryEntry();
                    TreeNode node = new TreeNode(tmp);
                    objTreeNode.Nodes.Add(node);
                    AddUsersAndComputers(node, d); // Appel de ma procédure récursive
                }
     
                MonTreeView.Nodes.Add(objTreeNode);
            }
     
    // Procédure récursive
    private void AddUsersAndComputers(TreeNode objectTreeNode, DirectoryEntry ouEntry)
    {
    	if (ouEntry != null)
    	{
    		DirectorySearcher search = new DirectorySearcher(ouEntry);
    		search.Filter = "(|(objectClass=organizationalUnit)(objectClass=user)(objectClass=computer))";
    		search.SearchScope = SearchScope.OneLevel;
     
    		foreach (SearchResult result in search.FindAll())
    		{
    			DirectoryEntry d = result.GetDirectoryEntry();
     
    			if(d.SchemaClassName.ToUpper() == "ORGANIZATIONALUNIT")
    			{
    				TreeNode node = new TreeNode(d.Name);
    				objectTreeNode.Nodes.Add(node);
     
    				addObjectToTreeView(node, d);
    			}
     
    			else
    				objectTreeNode.Nodes.Add(new TreeNode(d.Name));
    		 }
    	  }
    }
    Voila, cette fois ci c'est la bonne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Filtre LDAP sur requête Active Directory
    Par wmenant dans le forum VB.NET
    Réponses: 2
    Dernier message: 26/11/2009, 14h40
  2. filtre Active Directory
    Par djwel dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 28/04/2009, 10h00
  3. [C#] Active directory LDAP
    Par Gauden dans le forum Windows Forms
    Réponses: 9
    Dernier message: 02/05/2005, 13h57
  4. Réponses: 4
    Dernier message: 17/05/2004, 09h57
  5. Active directory
    Par m.schar dans le forum Développement
    Réponses: 5
    Dernier message: 22/03/2004, 10h30

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