【Management】JoinDomainOrWorkGroup メソッドでドメインに参加させる

前回、以下の投稿をしました。

【Management】DMZでのドメイン参加はオフラインドメインジョインで!

オフライン ドメイン ジョイン 機能を使用することで、書き込み可能なドメインコントローラーと通信することなくドメインに参加させることができます。

ただ、難点があります。それは、Windows Server 2008 R2 および Windows 7でないと djoinコマンドが使えないということ…。

じゃ、それ以前のクライアントをRODC環境のドメインに参加させるにはどうしたらよいでしょうか。

WMIの Win32_ComputerSystem クラスには、JoinDomainOrWorkGroup メソッドが実装されています。でもって、なんと、このメソッドには NETSETUP_JOIN_READONLY = 2048 という大変魅力的な引数が用意されているのです。

JoinDomainOrWorkgroup Method of the Win32_ComputerSystem Class
https://msdn.microsoft.com/en-us/library/aa392154(VS.85).aspx

つまり、きちんと事前に準備を行い、このメソッドを使用したスクリプトを実行すればRODCしか無い環境であってもドメインに参加することができます。

では手順を以下に示します。

1)コンピューターアカウントを作成する

Active Directory ドメインに参加させたいクライアントのコンピューターアカウントを作成します。「Active Directory ユーザーとコンピューター」を使用してもいいですし、net user ComputerName$ /add /domain net computer ComputerName /add(※ すみません間違えました。緒方さんご指摘ありがとうございました!)でも問題ありません。net user コマンドを使用する場合には、コンピュータ名の最後に「$」をつけることを忘れないでください。

2)コンピューターアカウントのパスワードを設定する

普段、あまりやらない作業ですが、大した処理ではありません。以下のようにコマンドラインから実行します。ユーザーのパスワードを設定するときと同じです。

net user ComputerName$ PASSWORD

3)コンピューターを「Allowed Password Replication Group」グループに所属させる

Allowed Password Replication Group に所属ているメンバー(ユーザーやコンピューター)は、RODCにパスワードをキャッシュさせることができます。逆に、このグループに所属していないアカウントはRODCにパスワードがキャッシュされません。

コンピューターアカウントは自分が通信するドメインコントローラにパスワードが保存されている必要があります。なぜならば、定期的にドメインコントローラと通信してパスワードのリセットを行うからです。

ちなみに、「Allowed Password Replication Group」は既定のグループなので、安全性を高めるには別のグループを作成してパスワードキャッシュを有効にしておくとよいです。

4)パスワードを同期する

Allowed Password Replication Group に所属しているアカウントがRODCにパスワードをキャッシュするタイミングは、最初に認証を行った時です。よって、グループに所属しただけだとパスワードはキャッシュされません。

そこで、[Active Directory ユーザーとコンピュータ]を使用して、[RODCのプロパティ]-[パスワード レプリケーション ポリシー]-[詳細設定]-[パスワードの事前配布] からパスワードキャッシュを手動で行っておきます。

5)スクリプトを作成する

JoinDomainOrWorkGroup メソッドを使ってドメインに参加するためのスクリプトを作成します。

サンプルスクリプト(実際に私が検証したスクリプトなので使えるはずです)を以下に掲載しておきますので、拡張子 vbs で保存してください。

RODC環境でドメインに参加させるスクリプト
https://blogs.technet.com/junichia/pages/3276197.aspx

6)スクリプトを実行する

スクリプトを参加させたいクライアントに保存し、以下のようにコマンドを入力します。
※JoinDomain.vbs というファイル名で保存したとします

c:\> joindomain.vbs /domain <DomainName> /machinepassword <PASSWORD> /readonly
  • DomainName :参加したいドメイン名
  • PASSWORD:コンピューターに設定したパスワード

/readonly を付加することを忘れないでください。これを指定すると、JoinDomainOrWorkGroup メソッドに 「NETSETUP_JOIN_READONLY = 2048」 が渡されるようになっています。

実行結果例を以下に示します。

image

うまくいけば、上の図のように「Welcome to the domain:ドメイン名」と表示されます。