トップ回答者
ドメイン参加時に、コンピュータアカウントを適切なOUに自動で振り分けたい

質問
-
クライアントOS:Windows7、サーバOS:WindowsServer 2008 R2のActiveDirectory環境
適用するGPOの種類ごとに、複数のOUがあります。
例えば、WindowsUpdateのポリシーを適用するOU、適用しないOUと区別しています。
クライアントがドメインに参加した時のデフォルトは、computersコンテナであるが、あるOUにリダイレクトする設定となっています。
このOUではない別のOUに移動させたい場合は、現状手動で移動しています。
これを自動化にしたいのですが、可能でしょうか。
以下の方法を考えたのですが、どのようにすれば実現できるかおわかりでしょうか。
<考えた方法>
ドメインに参加するとき、イベントログに「ID4741」をトリガーにジョブを実行することを考えたのですが、
そのトリガーとなったイベントの内容を表示・出力させることができるのかどうかというところでつまずいています。
イベントの内容を出力することができれば、そこでコンピュータアカウント名が取得できるので、やりたいことは実現できるのですが、、、
よろしくお願いします。
回答
-
チャブーンです。
おっしゃる要件(コンピュータごとにOUの置き場所を指定したい)を適えるもっとも確実な方法は、「最初から該当OUにコンピュータオブジェクトを作っておく」ことです。ドメイン参加時に生成したオブジェクトを「その場で移動」といったことは非現実的ですし、トラブルを招来しますので、避けた方が賢明です。
背景として「管理者権限でコンピュータオブジェクトを作成すると、管理者しかドメイン参加できない」ので、参加時に新規作成を採用されているかもしれません。このような場合、スクリプトを使えば「指定したユーザだけドメイン参加させるコンピュータオブジェクトを事前に作成」させることが可能です。過去にこのような質問にお答えしたことがありますので、以下の過去ログを参照なさってください。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答の候補に設定 Hebikuzure aka Murachi AkiraMVP 2016年6月17日 14:48
- 回答としてマーク 佐伯玲 2016年7月5日 2:07
-
定期的に既定のOU内のコンピューターオブジェクトを確認してMove-ADObjectで移動するタスクをスケジュールしてみてはいかがでしょうか。ただ、コンピューターアカウント名にルールがあるといった前提は必要です(「考えた方法」も同様かと思いますが)。
なおイベントをトリガーとするスクリプトの例は
「__InstanceCreationEvent Where TargetInstance ISA 'Win32_NTLogEvent」
あたりで検索すると、それらしいのがHITします(タスクスケジューラーの「イベント時」トリガでも同様かと思います)。
これらの例をざっと見たところ、イベントの内容がメッセージであれば「SourceEventArgs.NewEvent.TargetInstance」の「message」が目的のもののようです。
以上、参考まで。
すべての返信
-
チャブーンです。
おっしゃる要件(コンピュータごとにOUの置き場所を指定したい)を適えるもっとも確実な方法は、「最初から該当OUにコンピュータオブジェクトを作っておく」ことです。ドメイン参加時に生成したオブジェクトを「その場で移動」といったことは非現実的ですし、トラブルを招来しますので、避けた方が賢明です。
背景として「管理者権限でコンピュータオブジェクトを作成すると、管理者しかドメイン参加できない」ので、参加時に新規作成を採用されているかもしれません。このような場合、スクリプトを使えば「指定したユーザだけドメイン参加させるコンピュータオブジェクトを事前に作成」させることが可能です。過去にこのような質問にお答えしたことがありますので、以下の過去ログを参照なさってください。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答の候補に設定 Hebikuzure aka Murachi AkiraMVP 2016年6月17日 14:48
- 回答としてマーク 佐伯玲 2016年7月5日 2:07
-
定期的に既定のOU内のコンピューターオブジェクトを確認してMove-ADObjectで移動するタスクをスケジュールしてみてはいかがでしょうか。ただ、コンピューターアカウント名にルールがあるといった前提は必要です(「考えた方法」も同様かと思いますが)。
なおイベントをトリガーとするスクリプトの例は
「__InstanceCreationEvent Where TargetInstance ISA 'Win32_NTLogEvent」
あたりで検索すると、それらしいのがHITします(タスクスケジューラーの「イベント時」トリガでも同様かと思います)。
これらの例をざっと見たところ、イベントの内容がメッセージであれば「SourceEventArgs.NewEvent.TargetInstance」の「message」が目的のもののようです。
以上、参考まで。
-