Directoryのアカウント情報をエクスポートしたい場合がある。ldifdeコマンドを利用すると、標準規格であるLDIF形式でエクスポートできる。オプションを指定することで、アカウントの名称や種類による絞り込みも可能だ。Directory(AD)には、ドメイン・ユーザーのアカウント名やID、所属グループといった情報が格納されている。それらの情報をエクスポートして、ほかのソフトウェアあるいはサービスにインポートしたいことがある。別のディレクトリ・サービスにアカウントを複製することが挙げられる。Directoryのアカウント情報をエクスポートする(csvdeコマンド編)」では、マイクロソフト提供のcsvdeコマンドを使ってCSV形式でエクスポートする方法を説明した。Format)という形式のみ受け付ける、ということもある。LDIFはLDAPでディレクトリ情報をやり取りするためのデータ・フォーマットで、RFC2849で勧告されている標準仕様である。マイクロソフトはcsvdeコマンドと同様に、このLDIF形式をサポートした「ldifde」というコマンドライン・コマンドも提供している。本稿では、このldifdeコマンドでADのアカウント情報をエクスポートする手順と注意点を説明する。インポートについては別のTIPSで解説する予定だ。●ldifdeコマンドの入手・インストール→インストール手順をスキップして使い方を読むldifdeコマンドを利用するには、ADを制御するためのツールをインストールする必要がある。Mode)をインストールすると、%SystemRoot%\ADAMフォルダにldifde.exeがインストールされる。ダウンロード・センター)検索パスには登録されないので、「%SystemRoot%\ADAM\ldifde.exe」というようにフル・パスで指定して実行する。セットアップすることなく、ldifdeコマンドを実行できる(%SystemRoot%\system32フォルダにldifde.exeが存在するはずだ)。RSAT)をインストールする。サーバー管理ツール]−[役割管理ツール]までツリーを開き、次のいずれかの役割管理ツールを有効化する。サーバー管理ツール]−[役割管理ツール]までツリーを開き、次のいずれかの役割管理ツールを有効化する。Vistaの場合と同様にRSATをインストールする(上記のTIPS参照。7向けはバイナリが異なるので注意)。ツール]までツリーを開き、次のいずれかの役割管理ツールを有効化する。ツール]までツリーを開き、次のいずれかの役割管理ツールを有効化する。ツール]●ldifdeコマンドの基本的な使い方ldifdeコマンドの使い方は、コマンド・プロンプト上でオプションを指定せずに「ldifde」を実行すると表示される。ldifdeコマンドはデフォルトではエクスポート・モードで動作するので、エクスポート先のファイル名指定などのオプションを付けて実行すればよい。Adminsグループ所属のユーザーなど)でログオンする(別ドメインやワークグループから実行する方法については後述する)。<エクスポート・ファイル>」というオプションを指定する。個のエントリがエクスポートされましたコマンドが正しく完了しました上記のようにldifdeコマンドを実行すると、所属しているADの全オブジェクトの情報が次のようにexport.ldfへエクスポートされる。......都道府県の属性。......次のオブジェクト(省略)上記のdescription属性の値は本来、日本語で書かれた説明文だが、Base64でエンコードされている(エンコードされている属性には、属性名の末尾に「:」が2つ付く。「:」が1つならエンコードなし)。このようにldifdeコマンドはデフォルトで、日本語の値(Unicodeで記述された値)をBase64でエンコードして出力する。このデフォルトの挙動を変える方法については、後で説明する。●ユーザー・アカウントのみエクスポートするデフォルトでは、ldifdeコマンドはADの全オブジェクトの情報をエクスポートするため、例えば組織単位(OU)やシステム関連のオブジェクトなど、アカウント以外の不要な情報も記録されてしまう。必要な情報だけを抜き出すには、そのためのオプションをldifdeコマンドに指定する必要がある。ユーザー・アカウントのみエクスポートするには、次のように-rオプションを指定する。objectCategory=userグループ・アカウントをエクスポートするには、上記の「user」の代わりに「group」を指定すればよい。いったアカウントがエクスポートされるのか、ldifdeの実行時に確認するには、-vオプションを指定する。すると「CN=user01,CN=Users,DC=example,DC=jp」という表記で、エクスポート対象のアカウントが1つずつ表示される。特定の名前を持つユーザー・アカウントのみエクスポートしたい場合は、検索条件をLDAPの形式で指定する。名字(性)の頭文字が「s」から始まるユーザー・アカウントのみエクスポートするには、次のように-rオプションと検索文字列を指定する。"(&(objectCategory=user)(sn=s*))"「sn」は名字を格納している属性名である。●特定のOUやコンテナに所属するアカウントのみエクスポートするあるOUやコンテナに含まれるアカウントのみエクスポートするには、-dオプションを利用する。"cn=Users,dc=example,dc=jp"」というようにコンテナの場所を指定する。"ou=sales,dc=example,dc=jp"デフォルトでは、指定したOUやコンテナに含まれるサブ・コンテナ以下、すなわちサブ・ツリー全体がエクスポートされる。サブ・コンテナは含めず、指定したOU/コンテナ内に含まれるオブジェクトだけに限定するには、次のように-pオプションを指定する。OneLevel●属性を絞り込んでエクスポートするldifdeはデフォルトで、エクスポート対象のオブジェクトが持つ全属性をエクスポートしようとする。特定の属性だけ一括修正したい場合は、その属性だけエクスポートしてからテキスト・エディタなどで修正し、インポートした方がよい。そこで、属性を絞り込むオプションをいくつか紹介する。必要な属性が判明している場合は、次のように-lオプションで各属性をカンマで区切って指定すると、それらの属性だけがエクスポートされる。cn,description,distinguishedName,displayName,sAMAccountName逆に特定の属性を省きたいなら、それを-oオプションで指定する。以下では、ADに保存されたユーザーの証明書だけ省いてエクスポートするように指定している。userCertificate●所属外ドメインやワークグループからldifdeを実行するログオン中とは別のADに所属しているPCや、ワークグループ構成のPCから、ADの情報をエクスポートしたい場合は、対象のドメインから情報を取得できる資格情報を指定する必要がある。具体的には、次のように-bオプションや-sオプションを指定する。<ドメイン・コントローラ名>例えば、example.comドメインのadmin02アカウントを用いて、dc02.example.comというドメイン・コントローラからエクスポートするには、次のようにldifdeコマンドを実行する。<パスワード>に「*」を指定すると、入力を促すプロンプトが表示されるので、指定した<ユーザー名>のパスワードを入力する。エクスポートしていますエントリを検索しています...エントリを書き出しています.....................................................................................エクスポートが完了しました。OSによって異なるldifdeコマンドでエクスポートする際に注意が必要なのは、日本語すなわちUnicodeで表現する必要のある値の取り扱いだ。前述のとおり、こうした値は通常Base64でエンコードされて出力される。ここで-uオプションを指定すると、ldifdeコマンドは出力ファイルの文字コードをUnicodeにする。2003の場合は、Base64によるエンコードをせず、そのまま出力する。Unicode対応のテキスト・エディタで開くと、日本語の名前や説明が直接読み取れるし、編集もしやすい。R2で-uオプションを指定した場合、ldifdeコマンドは日本語を含む値もそうでない値も、すべてBase64でエンコードする(ただしDNだけはエンコードされない)。その結果、例えば「1」という値は「MQ==」というように変換されるため、可読性が非常に悪くなる。OSによるldifdeコマンドの出力結果の違い「日本語を含む」とは、表現するのにUnicodeを必要とする文字を含むという意味である。Vista以降では日本語の有無に関係なく、DN以外の属性の値はすべてBase64でエンコードされるため、非常に読みにくくなる。-uオプションを指定すべきか否かは、出力ファイルをどのように利用するかにかかっている。ADのアカウントを別のディレクトリ・サービスへインポートする場合は、そのサービスが要求する文字コードやエンコードと合致するように、-uオプションの指定の有無を決めるべきだろう。ldifdeコマンドの詳細については、次のマイクロソフトのリファレンス・ページを参照していただきたい。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。