ClonePrincipal は COM オブジェクトの DSUtils.ClonePrincipal 、Windows Scripting Host 及び Active Directory Service Interfaces ( ADSI ) を利用したツールです。
DSUtils.ClonePrincipal は次の 3 つのメソッドを提供しています。
メソッド 説明 AddSidHistory SIDHistory をコピーします。移行元が Windows 2000 ドメインにおいても使用可能です。 CopyDownlevelUserProperties 移行元の Windows NT ユーザーのプロパティを、移行先のプロパティにコピーします。このメソッドは移行元が Windows 2000 では利用できません。プロパティ情報を移行する場合は ADSI を利用して移行する必要があります。 Connect 移行元ドメインコントローラと移行先のドメインコントローラを接続します。 Windows 2000 には、いくつかのアカウント移行ツールがあります。ClonePrincipal はその中で、唯一、ユーザーが自由に移行方法をカスタマイズできるツールです(たぶん)。アカウントの移行には、簡単に書くと以下ポイントをクリアする必要があります。
- 両ドメインの認証
- ユーザーのコピー(実際は移行先ドメインで新規作成)
- プロパティ情報のコピー
- SidHistory のコピー(両方のドメインでのリソースアクセスの互換性を持たせるために必要です。)
次に、他の移行ツールとの比較をしてみます。
ツール名 移行ドメイン ドメインの関係 UI 移行後の状態 ClonePrincipal Windows 2000 から Winodws 2000
Windows NT から Windows 200別フォレスト間 CUI 移行先移行元共にアカウントは残る ADMT Windows 2000 から Winodws 2000
Windows NT から Windows 200別フォレスト間 GUI 移行先移行元共にアカウントは残る MoveTree Windows 2000 から Winodws 2000 同一フォレスト間 CUI 移行もとのアカウントは削除 SidHistory 及び SID は同一フォレスト内に重複することが許されていません。その為、同一フォレスト内での移行ツール MoveTree では、アカウントコピーを行った後、移行もとのアカウントを削除します。
Windows 2000 Support Tools に入っています。以下のパスよりインストールが可能です。
Windows2000CD-ROM\SUPPORT\TOOLS\SETUP.EXE
インストールしたら、Support Tools フォルダのルートに以下のファイルができます。
モジュール 説明 clonepr.dll ClonePrincipal 用の API ライブラリ clonepr.vbs アカウント一つを移行するサンプルスクリプト clonegg.vbs グローバルグループを移行するサンプルスクリプト cloneggu.vbs グローバルグループとユーザーを移行するサンプルスクリプト clonelg.vbs ローカルグループを移行するサンプルスクリプト sidhist.vbs SidHistory を移行するサンプルスクリプト clonepr.doc ClonePrincipal 及び、サンプルについての説明文書
ClonePrincipal を使用するには以下の準備が必要です。詳しくは、clonepr.doc の P14 や P18 をご覧下さい。
- 移行元から移行先への信頼関係
- 移行元ドメインコントローラで下記のレジストリの追加
レジストリ : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\TcpipClientSupport
データ型 : DWORD
値 : 1- 移行元ドメイン、移行先ドメイン共に、アカウントの監査を有効
- 移行元ドメインで以下の SourceDomainNam$$$ ローカルグループの作成
* SourceDomainNam は移行もとのドメイン NetBIOS 名。それに $ を 3 つ付けたローカルグループを作成するということ。- 下記のコマンドにて Clonepr.dll のレジストリ登録
regsvr32 clonepr.dll- 移行先の Administrators グループに移行もとの管理者アカウントを追加
- cloneggu.vbs の場合スクリプトの最後の方にある以下のコメントを外す
' if HasWellKnownRid(sidString) then
' ShouldCloneObject = False
' exit function
' end if
簡単に、cloneggu.vbs スクリプトのポイントを解説します。詳しくは、がんばって解析してください。結構多大な量があって大変です(^^ゞ
実行方法は、コマンドプロンプトより
CScript cloneggu.vbs /srcdc:SrcDC /srcdom:SrcDomain /dstdc:DstDC /dstdom:DstDomain /dstOU:DstOU
SrcDC :移行元ドメインコントローラの NetBIOS 名 SrcDomain :移行元ドメインの NetBIOS 名 DstDC :移行先ドメインコントローラの NetBIOS 名 DstDomain :移行先ドメインの NetBIOS 名 DstOU :移行先 OU の DN 名
set clonepr = CreateObject("DSUtils.ClonePrincipal") ' ClonePrincipal オブジェクトを作成 sub Main ' スクリプトをたどると、main サブルーチンが始めに呼ばれる srcDC = GetArgValue("srcdc", args) ' 引数の値を取得 srcDom = GetArgValue("srcdom", args) dstDC = GetArgValue("dstdc", args) dstDom = GetArgValue("dstdom", args) dstOU = GetArgValue("dstou", args) clonepr.Connect srcDC, srcDom, dstDC, dstDom ' Connect メソッドを使用して、両方のドメインに認証接続 set srcDomain = GetObject("WinNT://" & srcDom & "/" & srcDC & ",Computer") ' 移行元のドメインの取得 for each srcObject in srcDomain ' ドメインのオブジェクトを順番に取得し処理を行う if ShouldCloneObject(srcObject) then ' ShouldCloneObject サブルーチンで、取得したオブジェクトがビルトインアカウントかを識別 srcObjectClass = ObjectClass(srcObject) ' ユーザーであるかを識別 CloneSecurityPrincipal srcObject, srcSam, dstDom, dstDC, dstSam, dstDN ' CloneSecurityPrincipal サブルーチンでユーザー移行処理を開始 next end sub
| sub CloneSecurityPrincipal(byref srcObject, byval srcSam, byval dstDom, byval dstDC, byval dstSam, byval dstDN) | |
| set dstObject = GetObject(dstObjectSamPath) | ' 移行先のユーザーを取得する |
| errnum1 = Err.Number | |
| select case errnum1 | ' エラー状態により、ユーザーが存在するかを判定 |
| case E_ADS_UNKNOWN_OBJECT | ' ユーザーがいなかったら |
| set dstObject = CreateDestinationDN(dstSam, dstDN, dstDC, srcObjectClass) | ' CreateDestinationDN サブルーチンでユーザーを作成 |
| end select | |
| clonepr.CopyDownlevelUserProperties srcSam, dstSam, 0 | ' 移行元ユーザーのプロパティを、移行先ユーザーのプロパティにコピー |
| clonepr.AddSidHistory srcSam, dstSam, 0 | ' 移行元ユーザー SID を 移行先ユーザーの SidHistory にコピー(追加) |
| end sub | |
ZDNet - シングルドメインの検討
http://www.zdnet.co.jp/special/win2000/tokusyu/2000_01/10.html
DsAddSidHistory
http://msdn.microsoft.com/library/psdk/adsi/adfuncs_11bt.htm
Active Directory 移行ツール
http://www.microsoft.com/japan/windows2000/downloads/deployment/admt/
Active Directory
移行ツール概要
http://www.microsoft.com/JAPAN/technet/WIN2000/win2ksrv/technote/admtool.asp