Requêtes Active Directory

using System;

using System.Collections.Generic;

using System.Text;

using System.DirectoryServices;

using System.DirectoryServices.AccountManagement;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

ListerGroupesUtilisateur(args[0]);

ListerUtilisateursGroupe(args[1]);

}

/// <summary>

/// Lister les groupes d'un utilisateur Active Directory.

/// </summary>

/// <param name="nomUtilisateur"></param>

/// <returns></returns>

internal static List<object> ListerGroupesUtilisateur(string nomUtilisateur)

{

List<object> listeGroupes = new List<object>();

try

{

DirectoryEntry directoryEntry = new DirectoryEntry(null, null, null, AuthenticationTypes.Secure);

DirectorySearcher directorySearcher = new DirectorySearcher(directoryEntry);

directorySearcher.Filter = "(SAMAccountName=" + nomUtilisateur + ")";

directorySearcher.PropertiesToLoad.Add("cn");

SearchResult searchResult = directorySearcher.FindOne();

string adresseAd = searchResult.Path;

directoryEntry = new DirectoryEntry(adresseAd);

directorySearcher = new DirectorySearcher(directoryEntry);

directorySearcher.PropertiesToLoad.Add("memberOf");

searchResult = directorySearcher.FindOne();

PropertyValueCollection propertyValueCollection = searchResult.GetDirectoryEntry().Properties["memberOf"];

for (int i = 0; i < propertyValueCollection.Count; i++)

{

listeGroupes.Add(propertyValueCollection[i]);

}

}

catch (Exception e)

{

throw e;

}

return listeGroupes;

}

/// <summary>

/// Lister les utilisateurs d'un groupe Active Directory.

/// </summary>

/// <param name="nomGroupe"></param>

/// <returns></returns>

internal static List<object> ListerUtilisateursGroupe(string nomGroupe)

{

List<object> listeUtilisateurs = new List<object>();

try

{

DirectoryEntry directoryEntry = new DirectoryEntry(null, null, null, AuthenticationTypes.Secure);

DirectorySearcher directorySearcher = new DirectorySearcher(directoryEntry);

directorySearcher.Filter = "(&(objectCategory=group)(cn=" + nomGroupe + "))";

directorySearcher.PropertiesToLoad.Add("cn");

SearchResult searchResult = directorySearcher.FindOne();

string adresseAd = searchResult.Path;

directoryEntry = new DirectoryEntry(adresseAd);

directorySearcher = new DirectorySearcher(directoryEntry);

directorySearcher.PropertiesToLoad.Add("member");

searchResult = directorySearcher.FindOne();

PropertyValueCollection propertyValueCollection = searchResult.GetDirectoryEntry().Properties["member"];

for (int i = 0; i < propertyValueCollection.Count; i++)

{

listeUtilisateurs.Add(propertyValueCollection[i]);

}

}

catch (Exception e)

{

throw e;

}

return listeUtilisateurs;

}

}

}