Je suis en train de récupérer tous les gruops e-mail et leur adresse mail du système AD de la société. J'ai environ 1800 groupes mais j'ai trouvé il y a environ 20 gourps dont je ne peux pas obtenir leurs propriétés. J'ai essayé dans mes perspectives et ai obtenu des propriétés comme l'adresse de courrier correctement. Mais je ne peux pas les obtenir par code, quelqu'un s'il vous plaît aider. Merci. Voici mon extrait de code:Impossible d'obtenir les propriétés de certains groupes dans mon AD
static void TestGroupEmails()
{
ICollection<DirectoryEntry> groups = GetGroups();
Console.WriteLine(groups.Count + "groups");
List<String> noNameGroups = new List<String>();
foreach (DirectoryEntry de in groups)
{
String name = de.Properties["sAMAccountName"].Value as String;
String email = de.Properties["mail"].Value as String;
if (String.IsNullOrEmpty(email))
noNameGroups.Add(name);
}
StreamWriter writer = new StreamWriter(@"C:\ad\group mails.txt");
noNameGroups.Sort();
foreach (String name in noNameGroups)
{
writer.WriteLine(name);
}
writer.Close();
Console.ReadLine();
}
public static List<DirectoryEntry> GetGroups()
{
String filter = @"(&(objectCategory=group))";
List<DirectoryEntry> groups = new List<DirectoryEntry>();
using (DirectoryEntry root = new DirectoryEntry(Constants.ADConnPrefix))
{
using (DirectorySearcher searcher = new DirectorySearcher(filter, null))
{
searcher.PageSize = 10000;
searcher.ReferralChasing = ReferralChasingOption.All;
searcher.SearchScope = SearchScope.Subtree;
searcher.SearchRoot = root;
root.Username = Constants.UserName;
root.Password = Constants.Password;
using (SearchResultCollection searchResult = searcher.FindAll())
{
foreach (SearchResult sr in searchResult)
{
DirectoryEntry de = sr.GetDirectoryEntry();
groups.Add(de);
}
}
}
}
return groups;
}
public static SearchResult GetGroupInfo(String groupName)
{
String normalName = Utility.RemoveLoginNamePrefix(groupName);
String filterFormat = "(&(objectCategory=group)(sAMAccountName={0}))";
using (SearchResultCollection searchResult = Search(ADConnPrefix, null, filterFormat, normalName))
{
int count = searchResult.Count;
SearchResult sr = searchResult[0];
return sr;
}
}
Merci Bennor. J'ai trouvé quel est le problème, je devrais les interroger par "nom" au lieu de "sAMAccountName", c'est ce que la requête AD montre sur les noms de groupe. Votre chaîne de filtre fonctionne, je peux obtenir tous les groupes d'email de mes compagnies, merci beaucoup –