第9回 WshControllerオブジェクトの詳細:Windows管理者のためのWindows Script Host入門(2/3 ページ)
WSHでは、リモート・コンピュータにスクリプトを送り込んで実行できる。これにより、複数のコンピュータの集中管理などが可能になる。
WshControllerオブジェクトを利用したリモート・スクリプト実行のしくみ
WshControllerのオブジェクト・モデルは次のようになっている。
図から分かるとおり、WshControllerオブジェクトで呼び出せるメソッドはCreateScriptメソッドのみである。このCreateScriptメソッドを実行すると、結果としてWshRemoteオブジェクトが得られる。このWshRemoteオブジェクトを操作することで、リモート・コンピュータ上でのスクリプトの起動や終了を制御できる。リモート・コンピュータ上でのスクリプトの開始や終了は、それぞれStartイベント、EndイベントとしてWshRemoteオブジェクト側に通知される。WshControllerオブジェクトによるリモート・スクリプト実行のしくみを図にすると次のようになる。
WshControllerオブジェクトを利用したリモート・スクリプト実行のしくみ
WshControllerのCreateScriptメソッドを実行すると、WshRemoteオブジェクトが作成され、ここからリモート・スクリプトの制御が行えるようになる。
次表はWshRemoteオブジェクトに含まれる各メソッド/プロパティと、それらの役割を一覧にしたものだ。
メソッド/プロパティ/イベント | 役割 |
---|---|
Executeメソッド/Terminateメソッド | リモート・スクリプトの実行と終了 |
Statusプロパティ/Startイベント/Endイベント/Errorイベント | リモート・スクリプトの実行状態の監視と通知 |
Errorプロパティ | リモート・スクリプトのエラー情報の取得 |
セキュリティ設定に注意(WshController利用時の注意)
ネットワーク管理用途などでは、リモートでスクリプトが実行できるのは非常に便利だが、悪意のある攻撃者に悪用される危険があることも考えておかなければならない。このためWindowsのデフォルト設定では、リモートからのスクリプトの実行は行えないようになっている。WshControllerを利用してリモートからスクリプトを実行するには、対象となるすべてのコンピュータ(およびコンソールとなるコンピュータ)のレジストリに新しいエントリを作成する必要がある。具体的には、「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings」キーの中に「Remote」という名前付きの文字列(REG_SZ)値を作成し、その値を“1”とする。
【注意】
レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリ エディタの操作は慎重に行うとともに、あくまで御自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。
レジストリ・エディタで値を追加しているところ
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings中に新規文字列値を作成する。
リモート・コンピュータに対する管理者権限があるなら、WMI(Windows Management Instrumentation。Windowsの管理用インターフェイス)を用いることで、この操作をリモートから行うこともできる。WMIを用いてレジストリを設定するには、以下のようなコードを実行する。strComputerの値が対象コンピュータのコンピュータ名である。
01: Const HKEY_LOCAL_MACHINE = &H80000002
02: strComputer = "ComputerName"
03:
04: Set objRegProv = GetObject("winmgmts:{impersonationLevel=Impersonate}" & _
05: "!\\" & strComputer & "\root\default:StdRegProv")
06:
07: strKeyPath = "SOFTWARE\Microsoft\Windows Script Host\Settings"
08: objRegProv.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,"Remote","1"
WMIの解説は本稿の範囲を逸脱するので、このコードの詳細な解説はここでは行わない。StdRegProvオブジェクトの詳細が知りたい場合は、以下のMSDNのページ(英文)を参照していただきたい。
なお、以上はセキュリティを確保するための仕様だが、マイクロソフトが同社のサポート技術情報として公表している情報によれば、Windows XPでは、リモート・スクリプトのセットアップが初期状態では正常に行われていないバグがあり、リモート・スクリプトを実行するには、コマンドプロンプトであらかじめ「wscript -regserver」コマンドを実行しておかなければならない。従ってWindows XPについては、何らかの方法であらかじめコマンドを実行しておく必要がある。
Copyright© Digital Advantage Corp. All Rights Reserved.