2009-07-14 7 views
0

Tous,Puis-je récupérer le nom de domaine et le nom d'utilisateur en effectuant une recherche Directoy active en utilisant C#

J'ai une grande liste d'e-mails des utilisateurs, et je dois obtenir le nom d'utilisateur et le nom de domaine pour chacun d'entre eux.

Mon organisation contient beaucoup de domaines et nos utilisateurs se connectent à leur machine en utilisant des noms d'utilisateur qui sont différents de leurs adresses e-mail.

S'il vous plaît nous conseiller si nous pouvons écrire un utilitaire C# qui peut rechercher AD en utilisant l'email de chaque utilisateur, ou si nous pouvons le faire d'une manière plus simple.

Répondre

1

Êtes-vous sur .NET 3.5? Si c'est le cas - AD a de nouvelles fonctionnalités dans .NET 3.5 - consultez cet article Managing Directory Security Principals in .NET 3.5 par Ethan Wilanski et Joe Kaplan.

L'une des grandes nouveautés est une classe "PrincipalSearcher" qui devrait grandement simplifier la recherche d'utilisateurs et/ou de groupes dans AD.

Si vous ne pouvez pas utiliser .NET 3.5, utilisez un DirectorySearcher et indiquez l'adresse e-mail à vos critères de recherche, et de récupérer le nom d'utilisateur (lequel Il y a un noms d'utilisateur gazillion différents?!):

DirectoryEntry deRoot = new DirectoryEntry("LDAP://cn=Users,dc=yourdomain,dc=com"); 

DirectorySearcher deSrch = new DirectorySearcher(deRoot); 

deSrch.SearchScope = SearchScope.Subtree; 

deSrch.PropertiesToLoad.Add("sn"); // surname = family name 
deSrch.PropertiesToLoad.Add("givenName"); 
deSrch.PropertiesToLoad.Add("samAccountName"); 

deSrch.Filter = string.Format("(&(objectCategory=person)(mail={0}))", emailAddress); 

foreach(SearchResult sr in deSrch.FindAll()) 
{ 
    // you can access the properties of the search result 
    if(sr.Properties["sn"] != null) 
    { 
    string surname = sr.Properties["sn"][0].ToString(); 
    } 
    // and so on, for all the other properties, too 
} 

Espérons que cela aide!

Marc

1

Si toutes les données sont dans AD, vous pouvez probablement l'interroger en utilisant LDAP. Dans ce cas, je recommanderais DirectorySearcher puisque vous utilisez .NET.

Questions connexes