OpenLDAPへの接続で、ややハマリかけたのでメモを残しておきます。

OpenLDAP ServerからCSV形式で抽出
 using System;
 using System.Collections.Generic;
 using System.Text;
 using System.DirectoryServices;
 
 namespace LDAPtoCSV
 {
     class Program
     {
         static void Main(string[] args)
         {
             if (args.Length != 2)
             {
                 Console.WriteLine("Usage: LDAPtoCSV.exe <社員番号> <パスワード>");
                 return;
             }
 
             string strPath = "LDAP://hostname/ou=Users,dc=adniss,dc=jp";
             string strUser = "uid=" + args[0] + ",ou=Users,dc=adniss,dc=jp";
             string strPass = args[1];
             DirectoryEntry drEntry = new DirectoryEntry(strPath, strUser, strPass, AuthenticationTypes.FastBind);
 
             try
             {
                 // ADSI オブジェクトを取得する
                 Object obj = drEntry.NativeObject;
                 // LDAP検索オブジェクトを作成
                 DirectorySearcher drSearch = new DirectorySearcher(drEntry);
 
                 //drSearch.SearchRoot = new DirectoryEntry("ou=Users,dc=adniss,dc=jp");
                 // アカウントフィルターを設定
                 drSearch.Filter = "(uid=*)";
 
                 // Common Name(cn)プロパティを同時に
                 // 取得するように設定
                 string[] outputs = { "givenName", "sn", "cn", "mail", "o", "businessCategory", "ou", "uid" };
                 drSearch.PropertiesToLoad.AddRange(outputs);
                 // 検索する
                 SearchResultCollection scn = drSearch.FindAll();
                 if (scn == null)
                 {
                     Console.WriteLine("対象ユーザーがいません。");
                     return;
                 }
 
                 string line = "名,姓,ミドル ネーム,表示名,ニックネーム,電子メール アドレス,自宅の番地,自宅の市区町村,自宅の郵便番号,自宅の都道府県,国,自宅電話番号 :,自宅ファックス,携帯電話,個人 Web ページ,勤務先の番地,勤務先の市区町村,勤務先の郵便番号,勤務先の都道府県,勤務先の国,ビジネス Web ページ,勤務先電話番号,勤務先ファックス,ポケットベル,会社名,役職,部署名,オフィスの場所,メモ,,,,,,,,,,,,";
                 Console.WriteLine(line);
 
                 foreach (SearchResult sResult in scn)
                 {
                     line = "\"" + esc(sResult.Properties["givenName"][0]) + "\",\"" + esc(sResult.Properties["sn"][0]) + "\",\"\",\"\",\"" + esc(sResult.Properties["cn"][0]) + "\",\"" + esc(sResult.Properties["mail"][0]) + "\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"" + esc(sResult.Properties["o"][0]) + "\",\"" + esc(sResult.Properties["businessCategory"][0]) + "\",\"" + esc(sResult.Properties["ou"][0]) + "\",\"\",\"" + esc(sResult.Properties["uid"][0]) + "\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"";
                     Console.WriteLine(line);
                 }
             }
             catch (Exception ex)
             {
                 Console.WriteLine(ex.Message);
             }
         }
 
         static string esc(object str)
         {
             return (str as string).Replace("\"", "");
         }
     }
 }


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS