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;
}
}
}