ローカルスクリプトは、管理サーバの特定フォルダ上にある.bat 形式の実行可能ファイルです。
任意の管理対象マシンに対して操作を実行したときに、複数のプロビジョニング処理の一部としてローカルスクリプトを実行したり、あるいは、ローカルスクリプトのみを実行したりすることができます。
ローカルスクリプトでは、操作対象の管理対象マシンや所属グループに関する各種設定や情報を環境変数で参照することができるため、管理対象マシンの構成に合わせた処理が記述しやすいといったメリットがあります。
ローカルスクリプトの詳細は以下のとおりです。
対象ファイル
ローカルスクリプトとして使用可能なファイルは、.bat 形式の実行可能ファイルです。
格納フォルダ
ローカルスクリプトの格納フォルダは、SystemProvisioning のインストールフォルダ直下のScript フォルダです。既定値の格納フォルダは、<SystemProvisioningのインストールフォルダ>\Script となります。
このフォルダ直下に格納した.bat ファイルをローカルスクリプトとして利用できます。
ローカルスクリプトをSystemProvisioning に登録するには、ローカルスクリプトを上記のScript フォルダに格納した状態で、Web コンソールの [リソース] ビューから [ソフトウェア] をクリックし、[操作] メニューから [スクリプト/ファイル収集] をクリック、もしくは [管理]ビューから [サブシステム] をクリックし、[操作] メニューの [収集] をクリックしてSystemProvisioning の情報更新を行ってください。
Scriptフォルダの場所の設定は、レジストリキー: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\NEC\PVM\DPMProvider\Scriptの値:ScriptFolderの設定を変えることで変更可能です。
Web コンソール上での表示形式
SystemProvisioning のWeb コンソール上では、ローカルスクリプトを以下の形式で表示します。
拡張子なしスクリプトファイル名/<localhost>
したがって、"localscript.bat" というファイル名でローカルスクリプトを作成した場合、Web コンソールでは配布ソフトウェアとして以下のように表示します。
localscript/<localhost>
ローカルスクリプトの実行可能な操作
以下の操作で実行可能です。対象となる管理対象マシンを指定して実行します。
・指定ソフトウェア配布/ssc deploy software
以下のポリシーのアクションで実行することも可能です。
・ローカルスクリプト実行(ポリシーアクション)
また、グループプロパティ、モデルプロパティ、ホスト設定、および マシンプロパティの[ソフトウェア]タブに登録し、以下のプロビジョニングの操作を行った場合、複数のプロビジョニング処理の1つとして実行することも可能です。
・リソース割り当て / ssc assign machine
・新規リソース割り当て / ssc create machine
・割り当て解除 / ssc release machine
・マシン置換 / ssc replace machine
・用途変更
同様に以下のポリシーアクションでも実行可能です。
・マシン操作/ マシン置換
・マシン操作/ マシン置換(直ちに強制OFF)
・グループ操作/ スケールアウトマシン追加
ローカルスクリプトの実行、および中断
ローカルスクリプトは、上記の操作で実行することが可能です。
実行中のローカルスクリプトは、Web コンソールでJob のキャンセルにより中断できます。
また、ローカルスクリプトが2 時間以上たっても終了しない場合は、強制終了します。「1.3.10. ソフトウェア配布のタイムアウト」を参照してください。
実行時カレントフォルダ
ローカルスクリプト実行時のカレントフォルダは、上記のローカルスクリプト格納フォルダとなります。
実行時のコマンドライン引数および環境変数
ローカルスクリプト実行時のコマンドライン引数を指定することはできません。
ローカルスクリプト内で「1.6.3. 予約変数」、「1.6.4. 変数の定義方法(カスタムプロパティ)」で説明する変数を、環境変数で使用することができます。
実行結果の判断方法 / 設定方法
ローカルスクリプトの実行結果が異常終了の場合、運用ログに以下のエラーメッセージ
が出力されます。
「サーバ(xxx)へのローカルスクリプト(xxx)実行に失敗しました。(エラーコード)」
ローカルスクリプト内の処理によっては、実際には処理が失敗していても、ローカルスクリプトの実行結果としては正常終了しているように見える場合があります。
実際の実行結果が見えるようにするには、ローカルスクリプト内にローカルスクリプトの終了コードを設定します。
設定方法は、ローカルスクリプトの終了時に以下を記述します。
exit /b n
n を0 とすると、実際には処理が失敗している場合でも正常終了となり、0 以外を設定すると、処理が失敗している場合、異常終了となります。異常終了の値は、ユーザ自身で設定することができます。
このn の値が、エラーコードとして運用ログに出力されます。
運用ログでの実行結果確認方法
ローカルスクリプトの実行結果を運用ログにて確認することができます。
運用ログに以下のフォーマットで出力されます。
1行目 script=[スクリプト名]
2行目 exitcode=[終了コード] stdout=[標準出力] stderr=[標準エラー出力]
標準出力および標準エラー出力のフォーマットは以下のとおりです。
標準出力および標準エラー出力の文字数が指定文字数×2以下であれば全部出力します。
標準出力および標準エラー出力の文字数が指定文字数×2+1以上であれば先頭と最後から指定文字数分切り取り、間に"..."を挟んで出力します。
標準出力と標準エラー出力から指定文字数分切り出した際に、先頭および末尾に改行コードが含まれている場合は削除します。
標準出力と標準エラー出力から切り出した文字列の途中に改行コードが含まれる場合はそのまま出力します。
指定文字数の設定は以下のレジストリにあり、デフォルトは70です。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\NEC\PVM\DPMProvider\LogOutputNumberOfCharacters
なお、ローカルスクリプトから、以下のような対話形式のプログラムは実行できないので注意してください。このようなプログラムをローカルスクリプトから実行するとローカルスクリプトが完了できない問題が発生します。
Windowsアプリケーション(制御を戻さないアプリケーション)
コマンドラインでキー入力を要求する様なアプリケーション