11月20日の投稿「Windows Server バックアップとスナップショットの関係」の最後に、
「属性の復元方法については、次回の投稿で紹介したいと思います。」とお伝えしましたが、
この部分について触れてみたいと思います。
つまり今回のテーマは、
「スナップショットのデータからActive Directoryユーザーの属性をインポートする方法」です。
スナップショットのデータはdsamain.exeを使ってマウントすると、
スナップショットを作成した時点でのActive Directoryのデータを参照することができますね。
ところが、ADSIエディタやLDP.exeで参照できたところで、
データを現在のディレクトリにそのままインポートできなきゃ困るんだよね…
というときは、ldifdeやdsgetコマンドを使うと良いですよ。
ここでは2つほど、例を挙げましょう。
例1:会社情報(Company属性)をスナップショットからインポートする
ポート番号10000でマウントされているディレクトリから、
Suguru Kuniiユーザーの属性を取り出したい、というときは次のようなコマンドを実行します。
このファイルの中から、インポートしたい属性だけを残して後はすべて削除してしまいます。
削除後はこのような感じ。
ポイントは、
1行目のDNが記述されている部分は必ず残すこと、
2行目のchangetype:はaddからmodifyに変更すること、
3行目にreplace:と入力して変更したい属性名(ここでは会社名なのでcompany)を記述すること、
4行目に変更後の属性(前のテキストファイルに書いてあるので、その行を残しておきます)を記述すること、
5行目に-(ハイフン)をいれること、
です。
ここまでができたら、インポートします。
C:>ldifde -i -f kunii.ldf |
-fは前に作成したファイルの名前が入ります。
これで属性をスナップショットから現在のActive Directoryにインポートすることができました。
ちょっと面倒ですね、自動化と呼ぶにはほど遠い印象が…
例2:ユーザーの所属するグループ(MemberOf属性)をスナップショットから取り出し、
グループのメンバー(Member属性)にインポートする
このケースでは、ldifdeを使うのも良いですが、
dsmodとdsgetを組み合わせる方法というのが使えるので、そちらを紹介しましょう。
ポート番号10000でマウントされているディレクトリから、Suguru kuniiユーザーのmemberOf属性を取り出し、
SalesグループのMember属性にインポートする、という処理をしたいときは、次のようなコマンドを実行します。
C:>dsget user "cn=Suguru kunii,ou=lab,dc=example,dc=com" -s localhost:10000 -memberOf | dsmod group -addmbr "cn=Suguru Kunii,ou=lab,dc=example,dc=com" |
dsgetコマンドはディレクトリから特定のオブジェクトまたは属性の情報を取り出す時に使えるコマンドなので、
これを使ってmemberOf属性からグループを取り出し、続けて、dsmodコマンドでグループのmember属性にcn=Suguru Kuniiを
追加しています。
ちなみにdsget単体で実行するとこんな感じ。
salesグループとDomain Usersグループのメンバーになっているとの結果が返ってきましたが、
Domain UsersグループはActive Directoryが自動的にMember属性に追加しますから、
dsgetとdsmodを組み合わせて実行すると、このようなエラーが必ず表示されます。
だけど、やりたいことはできていますから、問題ではないですよね。
お試しあれ!