2010年4月28日水曜日

Active DirectoryオブジェクトのCNを変更する

ADSIを使用してActive Directoryオブジェクトの様々なプロパティの変更などを行うことは可能だが、renameというコマンドはサポートされていないので名前の変更は行えない。
一つ一つの変更はGUIベースの管理ツールで行えばよいが、大量に変更を行う場合はちと大変。
方法として発見したのは2つ。

1. ADSIでMovehereメソッドを使用する。
Movehereメソッドを使うとActive Directory内部でオブジェクトの移動を行うことができるが、この時に新たな名前を指定して同じ場所に移動することで事実上名前の変更を行うことができる。

Hey, Scripting Guy! でサンプルのページを見つけたのでリンクしておく。
サンプルはグループのCNを変更しているが、ほかのオブジェクトでもやりかたは同じ。


2. dsmoveコマンドを使用する。
Windows 2003以降で使用できるらしい。
ディレクトリの中で指定されたオブジェクトを移動、または名前の変更をするためのコマンド。
コマンド単体で必要な作業が実行できるので1.の方法よりは簡単かも。

dsmove <オブジェクト識別名> -newname <新しい名前>

例. test.comドメインの"Users" OUにある"鈴木 一郎"のCNを”Suzuki, Ichiro”に変更したい。

dsmove "CN=鈴木 一郎,OU=Users,DC=test,DC=com" -newname "Suzuki\, Ichiro"

識別名に空白を含む場合は""(ダブルクォーテーション)で括る必要あり。
識別名にカンマを使用する場合はエスケープ文字として円記号をカンマの前に入力する必要あり。

ITProのコマンドの紹介ページはこちら


*注意事項
CNを変更してもdisplayName(表示名)は変更されない。
両方変更が必要な場合は注意すること。
ADSIでやろうとする場合は先にdisplayNameを変更してからMovehereメソッドで名前の変更(移動)をするのが良いと思う。
逆の順番だとCNを変更したら再度そのオブジェクトに新しいCNを指定してバインドし、それからdisplayNameを変更する必要があるので面倒かと。

1 件のコメント: