obtenir des noms d'utilisateur dans un Groupe Active Directory via .net
Le code ci-dessous me met les utilisateurs dans le groupe, mais il est retourné
"CN=johnson\,Tom,OU=Users,OU=Main,DC=company,DC=com"
Je veux juste retourner le Premier et le Dernier nom. Comment puis-je y arriver?
DirectoryEntry ou = new DirectoryEntry();
DirectorySearcher src = new DirectorySearcher();
src.Filter = ("(&(objectClass=group)(CN=Gname))");
SearchResult res = src.FindOne();
if (res != null)
{
DirectoryEntry deGroup = new DirectoryEntry(res.Path);
PropertyCollection pcoll = deGroup.Properties;
foreach (object obj in deGroup.Properties["member"])
{
ListBox1.Items.Add(obj.ToString());
}
}
La suite n'est pas vraiment une réponse, juste un avertissement: enveloppez vos DirectoryEntry, DirectorySearcher et surtout tout SearchResultCollections (par exemple, à partir de l'appelant DirectorySearcher.FindAll) à l'aide d'instruction, ou d'un try/finally avec un appel dispose. SearchResultCollections ne peut pas être nettoyée. J'ai chassé vers le bas d'une fuite de mémoire pour jours après à l'aide d'un exemple que j'ai trouvé en ligne qui n'a pas de Jeter quoi que ce soit. Vérifier MS documentation à fond pour voir ce que les classes impliquées dans la recherche Active Directory vha
OriginalL'auteur Eric | 2011-02-04
Vous devez vous connecter pour publier un commentaire.
Je préfère utiliser les classes dans le Système.DirectoryServices.AccountManagement:
De recherche, à travers le groupe.Les membres de propriété jusqu'à ce que vous avez un Principal que vous voulez. Puis extraire le nom comme ceci:
Super réponse! Merci
OriginalL'auteur Russell McClure
À l'aide de votre code, le givenName (prénom) et sn (nom de famille) propriétés devrait fonctionner.
Si vous utilisez le Système.DIrectoryServices.AccountManagement espace de noms UserPrincipal (comme @russell-mcclure a suggéré de), vous trouverez GivenName et Nom propriétés aussi.
AccountManagement est très pratique, sauf si vous devez traverser une forêt fiable et avez besoin d'un catalogue global pour trouver l'utilisateur.
Dans mon code de frapper un Serveur Windows 2008 DC .Net 4.0, je suis 24 propriétés par défaut, sans modifier le PropertiesToLoad dans mon DirectorySearcher, y compris givenName et sn...
Je n'arrive pas à utiliser le accountmanagement parce qu'il n'existe pas dans mon espace de noms directoryservices.
AccountManagement est en 3.5 et 4.0 msdn.microsoft.com/en-us/library/...
Avez-vous d'ajouter une référence à votre projet?
OriginalL'auteur bigtlb
C'est un script PowerShell que j'ai fait pour le faire sans l'aide de la AccountManagement classes. Il devrait être assez facile de le traduire en C#:
OriginalL'auteur Vinicius