Copains Comme Cochon

  • Augmenter la taille
  • Taille par défaut
  • Diminuer la taille
Accueil Développement C# Manipuler Active Directory en C#

Manipuler Active Directory en C#

Envoyer Imprimer PDF

Voici un petit exemple (application console) pour se connecter à Active Directory puis afficher et mettre à jour une propriété sur un utilisateur.

Vous devez connaître le chemin LDAP où vous souhaiter travailler. La racine LDAP d'une Active Directory qui se nomme "test.local" est "LDAP://dc=test,dc=local", le chemin LDAP d'une unité d'organisation nommé "Unit" dans l'AD test.local est "LDAP://OU=Unit,DC=test,DC=local".

Vous devez, dans un premier temps, ajouter une référence à la librairie System.DirectoryServices et ensuite on peut coder :

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;

namespace myProject
{
    class Program
    {
        static void Main(string[] args)
        {

            try
            {
               // Connexion à Active Directory avec le compte courant
               Console.Write("Connexion AD: ");
               DirectoryEntry Ldap = new DirectoryEntry("LDAP://DC=test,DC=local");
               Console.WriteLine("OK");

                // Obtient la liste des utilisateurs AD
                Console.Write("Recupere la liste des utilisateurs: ");
                DirectorySearcher searcher = new DirectorySearcher(Ldap);
                searcher.Filter = "(objectClass=user)";
                SearchResultCollection Users = searcher.FindAll();
                Console.WriteLine("OK");

                Console.WriteLine("Nombre d'utilisateurs trouvé dans AD: " + Users.Count.ToString());
                foreach (SearchResult anUser in Users)
                {
                    DirectoryEntry User = anUser.GetDirectoryEntry();

                        Console.WriteLine("Utilisateur " + User.Properties["cn"].Value);

                        // Ajouter au groupe TestGroup
                        // CN=TestGroup,OU=Unit,DC=test,DC=local
                        Console.Write("\t-> Integration au groupe TestGroup:");
                        DirectoryEntry TestGroup = new DirectoryEntry("CN=TestGroup,OU=Unit,DC=test,DC=local");

                        // Si l'utilisateur est déjà membre du groupe, on ne l'intégre pas !
                        if (!TestGroup.Properties["member"].Contains(User.Properties["distinguishedName"].Value))
                        {
                           
                            TestGroup.Properties["member"].Add(User.Properties["distinguishedName"].Value);
                            TestGroup.CommitChanges();
                            Console.WriteLine("OK");
                        }
                        else Console.WriteLine("Utilisateur déjà membre de ce groupe !");

                        // Mise à jour du profil TS
                        Console.Write("\t-> Mise à jour du profil TS:");
                        String TSProfilPath = @"\\SERVEUR\profils\" + User.Properties["samAccountName"].Value;
                        Console.Write(TSProfilPath + " / ");

                        try
                        {
                            User.InvokeSet("TerminalServicesProfilePath", new object[] { TSProfilPath });
                            User.CommitChanges();
                            Console.WriteLine("OK");
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("NOK (" + ex.Message + ")");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            while (!Console.KeyAvailable) { System.Threading.Thread.Sleep(1000); }
        }
    }
}

Commentaires (0)
Ecrire un commentaire
Vos détails de compte:
Commentaire:
[b] [i] [u] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):S
:!::?::idea::arrow:
Sécurité
Saisissez le code que vous voyez.
Mise à jour le Samedi, 13 Février 2010 09:57  

Identification

Compteur de visite

mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterAujourd'hui87
mod_vvisit_counterHier461
mod_vvisit_counterCette semaine3335
mod_vvisit_counterLa semaine dernière7713
mod_vvisit_counterCe mois-ci8936
mod_vvisit_counterLe mois dernier15664
mod_vvisit_counterTout154532

Nous avons: 3 visiteur(s) online
Votre IP: 38.107.191.98
 , 
Nous sommes le 11/09/2010