2010-11-30 3 views
1

J'utilise ODBC pour extraire des données du répertoire actif afin d'obtenir l'adresse e-mail d'un nom d'utilisateur particulier en utilisant le code ci-dessous.C# utiliser ActiveDir pour obtenir des noms sous un organigramme de gestionnaire?

comment puis-je utiliser AD pour tirer tous les noms d'utilisateur de peolel qui rapportent dans un gestionnaire prticular?

je peux transversal l'organigramme dans Outlook si im pensant que je peux faire la même chose en utilisant AD ...

idées?

System.Data.OleDb.OleDbConnection con; 
     System.Data.OleDb.OleDbCommand cmd; 

     con = new System.Data.OleDb.OleDbConnection("Provider=ADsDSOObject;dsn=Active Directory Provider"); 
     con.Open(); 

     //Create a command object on this connection 
     string strSQL = "SELECT mail FROM 'LDAP://DC=amrs,DC=win,DC=ml,dc=COM' WHERE samaccountname = '" + UserName.Replace(@"AMRS\", "") + "'"; 
     cmd = new System.Data.OleDb.OleDbCommand(strSQL, con); 

     try 
     { 
      return Convert.ToString ( cmd.ExecuteScalar()); 
     } 
     catch (System.Data.OleDb.OleDbException exc) 
     { 
      return "ERROR: " + exc.ToString(); 
     } 
     finally 
     { 
      con.Close(); 
     } 

Répondre

0

Voir si l'attribut de gestionnaire dans AD est défini? Il devrait vous renvoyer le nom distinctif du gestionnaire. Vous pouvez ensuite analyser la chaîne pour déterminer le samAccountName du gestionnaire. Ensuite, répétez simplement votre recherche en utilisant le nom distinctif du gestionnaire.

Maintenant, si l'attribut gestionnaire n'est pas réglé ....

Peut-être la recherche par code du département, puis vérifier le titre de tout le monde dans le département?

Peut-être que vous voulez regarder dans la classe Directory Services.

Ce link vous donne un tutoriel de base sur la façon d'interroger AD

+0

est la façon dont je tire les données de l'annonce dans mon exemple de code utilisable pour quelque chose comme ça? Je pense qu'il y a d'autres façons .net de se connecter à AD qui pourrait être mieux ??? – kacalapy

+0

Oui, la méthode OldDb fonctionnerait probablement. Vous avez probablement besoin de sélectionner le gestionnaire de .... (puis de parcourir récursivement la chaîne). Je mis à jour ma réponse d'ajouter des informations sur les services d'annuaire – Lareau

+0

quand je lance SELECT top 50 \t gestionnaire DE OPENQUERY (ADSI, ' gestionnaire SELECT FROM '' LDAP: // DC = amrs, DC = victoire, DC = ml , dc = COM '' WHERE objectClass = '' user '' et objectClass <> '' ordinateur '' ') AS tblADSI où gestionnaire n'est pas nul je reçois "CN = Parlapiano \, Jim, OU = Utilisateurs, OU = Technologie, OU = IDS, DC = amrs, DC = win, DC = ml, DC = com "pas seulement le nom d'utilisateur du gestionnaire. Quoi de neuf avec ça? – kacalapy

Questions connexes