2010-11-30 3 views
1

私は以下のコードを使用して特定のユーザー名の電子メールを取得するために、ODBCを使用してアクティブなディレクトリからデータを取得しています。c#ActiveDirを使用してマネージャー組織図の下に名前を取得しますか?

私は広告を使用して、prticularマネージャーに報告するpeolelのすべてのユーザー名を取得できますか?

私はそれを用いたADを行うことができます見通しので、イム思考で組織図...

アイデアを横断することができますか?

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

答えて

0

ADのマネージャー属性が設定されているかどうかを確認してください。それはあなたにマネージャの識別名を返すべきです。文字列を解析して、マネージャのsamAccountNameを調べることができます。 次に、マネージャの識別名を使用して検索を繰り返します。

今manager属性が設定されていない場合は....

は多分部門コードで検索して、部門の全員のタイトルをチェック!

Directory Servicesクラスを調べることもできます。このlinkはあなたにAD

+0

を照会する方法についての基本的なチュートリアルを提供します

は、私がこのような何かのために使用可能な私のコードサンプルでは広告からデータを取得方法は何ですか?私は他の方法があると思う。ネットでは、より良いかもしれない広告に接続する??? – kacalapy

+0

はい、OldDbの方法がおそらく動作します。おそらく....から選択マネージャを実行する必要があります(そして、再帰的にチェーンを通過します)。ミリリットル= // DCの=のAMRS、DC =勝利、DC:私は私が 'LDAP」から SELECTマネージャ ' OPENQUERY(ADSI、FROMトップ50 \tマネージャ を選択実行すると、ディレクトリサービス – Lareau

+0

に関するいくつかの情報を追加するための私の答えを更新しました、dc = COM '' WHERE objectClass = '' user '' objectclass <> '' computer '' ')AS tblADSI ここでmanagerはnullではありません "CN = Parlapiano \、Jim、OU = Users、 OU =テクノロジ、OU = IDS、DC = amrs、DC = win、DC = ml、DC = com」と同じです。どうしたの? – kacalapy

関連する問題