概要  
Active Directoryに,ユーザーやグループなどのオブジェクト情報をインポート/エクスポートする。LDIF形式というLDAPに添った実装形式のテキスト・ファイルをオブジェクト情報にエクスポート/インポートできる。オブジェクト内容の一部を置き換えたり削除したりするような使い方も簡単にできるほか,一定の条件を満たせばパスワード情報(unicodePwd属性)をインポートすることも可能(エクスポートは不可)なので,知っているととても便利なコマンドである。

Active Directoryドメイン・コントローラでは,LDAPベースでドメイン情報が登録され,いろいろなLDAPオブジェクト(ユーザー・オブジェクト,グループ・オブジェクト,コンピュータ・オブジェクト,OUなど)として構成される。このオブジェクトの内容を一括でテキスト・ファイルにエクスポートしたり,エクスポートしたデータをインポートしたりすれば,オブジェクトの内容を一括で登録することができる。ldifdeコマンドは,オブジェクトや各属性について内容の変更や削除が自由にできるため,同様にActive Directoryにオブジェクト情報をインポート/エクスポートするcsvdeコマンドに比べて,とても自由度が高いコマンドといえる。

その一方,CSVファイルのテキスト・ファイルを使うcsvdeコマンドと違って,LDIF形式という特殊なフォーマットを理解する必要があるため,慣れるまでに手間がかかる。また,複雑なフォーマットのためExcelのようなオフィス・アプリケーションで管理するのが難しいという弱点もある。

なお,LDIF形式は業界標準フォーマット(RFC2849で勧告)なので,ldifdeコマンドを使ってエクスポートしたデータをActive Directory以外のLDAPサーバーにインポートしたり,その逆にほかのLDAPサーバーからActive Directoryにインポートすることも可能である。例えば,Linuxにあるldapaddコマンドを使って,Active Directoryのデータを制御することも可能となる。


 構文  
ldifde [-?] [-i] [-f LDIFファイル名] [-s サーバー名] [-v] [-c 文字列1 文字列2] [-j パス] [-t ポート番号] [-u] [{-a ユーザーDN パスワード|*}|{-b ユーザー名 ドメイン名 パスワード|*}]
または
ldifde -d DN名 -f LDIFファイル名 [-r フィルタ] [-p スコープ] [-l 属性リスト] [-o 属性リスト] [-g] [-m] [-n] [-x]
または
ldifde -i -f LDIFファイル名 [-k] [-y|-e] [-q スレッド数]

 利用環境  
Windows 95 ×
Windows 98 ×
Windows Me ×
Windows NT 4.0 ×
Windows 2000 ○(Serverのみ)
Windows XP ×
Windows Server 2003 ○
Windows Vista ×

 汎用オプション 
(なし)または-?コマンドのヘルプを表示する。
-iインポート・モードで動作させる。LDIFデータをインポートさせたいときに指定する。この-iオプションを指定しない場合は,エクスポート・モードで動作する。
-f LDIFファイル名エクスポートまたはインポートするLDIFファイル名を指定する。
-s サーバー名アクセスするドメイン・コントローラを指定する。このオプションを指定しなかった場合は自分自身にアクセスする。
-v詳細モードで実行する。
-c 文字列1 文字列2エクスポートまたはインポートする際に,読み込まれるデータに含まれる「文字列1」を「文字列2」に置換する。異なるDN(識別子名)環境で作業するときに便利である。
-j パス作業ログの生成先パスを指定する。指定したパスにファイル名ldif.logで記録する。
-t ポート番号接続先のポート番号を指定する。例えば,LDAPS(636/tcp)に接続するときに利用する。
-uUnicode文字列を利用するときに指定する。日本語文字を扱うときに便利。
-a ユーザーDN名 [パスワード|*]シンプル認証レベル(LDAPアカウントとパスワード)で明示的にアカウントを指定して接続する。ただし,ここで入力したパスワードは平文でネットワークを流れるので注意が必要である。
-b ユーザー名 ドメイン名 [パスワード|*]SSPI認証レベル(ここではKerberos認証)で明示的にアカウントを指定して接続する。

 エクスポート・オプション 
-d DN名エクスポートしたいオブジェクトまたは検索対象のルート・オブジェクトのDN(distinguish name:識別名)名を指定する。
-r フィルタ検索対象のルート・オブジェクトに対して,検索時のフィルタ(クラス名や属性名)を指定する。このオプションを指定しない場合は「(ObjectClass=*)」を指定したものとして,すべてのオブジェクトが検索対象となる。
-p スコープ検索対象のルート・オブジェクトに対して,検索時の範囲(Base=ルートのみ,OneLevel=一階層のみ,Subtree=下階層すべて)を指定する。このオプションを指定しない場合,Subtreeを指定したものとなる。
-l 属性リスト指定されたオブジェクトに対して,エクスポートする属性を明示的に指定したい場合に,属性名をカンマで列挙する。
-o 属性リスト指定されたオブジェクトに対して,エクスポートする属性を明示的に除外したい場合,属性名をカンマで列挙する。
-gページ検索を無視して利用しない。検索対象のオブジェクト数が多いときに利用するが,検索に時間がかかる場合がある。
-mSAM(security account manager)ロジックを有効にし,Active Directory固有の属性値を取得しない。例えばObjectSIDといったシステム固有の情報はインポート時には利用できないため,不要なケースがある。
-nバイナリ値はエクスポートしない。例えばテキスト変換をしていないUnicode文字列を含む属性やuserParameters属性などが対象となる。
-x削除済みオブジェクトの情報もエクスポートする。削除したオブジェクトはすぐにデータベースから消えるわけではなく,隠しコンテナに移動され一定期間保存される。Windows Server 2003のみで利用可能。

 インポート・オプション 
-kインポート時の固有エラーを無視して作業を続行する。ただし,すべてのエラーを回避するわけではない。
-yインポート時の低速コミットを有効とする。
-eインポート時の低速コミットを無効とする。Windows Server 2003のみで利用可能。
-q スレッド数インポート時にスレッド数を指定する。スレッド数を増やすとインポート・ファイルの途中からもデータを読み込むが,先頭の方に記載されたOUやグループが作成されていない場合にはエラーが出てしまうので注意。Windows Server 2003のみで利用可能。

 使用例1:情報をActive Directoryに一括でインポートする(クリックで詳細表示)  
ldifde -i -u -f [LDIFファイル名]

 使用例2:Active Directoryのユーザー・オブジェクトやグループをエクスポートして別のActive Directoryにインポートする(クリックで詳細表示)  
ldifde -d DN名 -s 相手サーバー名 -b ユーザー名 相手ドメイン名 -f LDIFファイル名 && ldifde -i -c 相手のドメイン識別名 自分のドメイン識別名 -f LDIFファイル名

 使用例3:パスワードをインポートする(クリックで詳細表示)  
ldifde -i -u -t 636 -f LDIFファイル名