VMWare: ゲストOS の自動起動 自動終了 Suspend Resume 方法(2)
Tagged:
前回に引き続き、「VMWare: ゲストOS の自動起動 自動終了 Suspend Resume 方法」についてです。
グループ・ポリシーを利用する

前回は、
1. 「vmware-cmd」を使う
2. 「Windows の グループ・ポリシーに設定する」
のうち 「vmware-cmd」を使うところまででした。
では、それをどうすれば Windows の 起動時や終了時に実行できるかという話になります。

そこで、登場するのが「グループ・ポリシー」です。 グループ・ポリシーは、ユーザー環境やシステム設定を制御する機能ですので、 起動時や終了時に特定の処理を実行させることも可能です。
グループ・ポリシーの設定はグループ・ポリシー・エディタを使います。

グループ・ポリシー・エディタを利用する

[スタート]->[プログラム]メニューなどには登録されていないので、
[スタート]->[ファイル名を指定して実行]、ダイアログに「gpedit.msc」と入力して[OK]をクリックします。

グループ・ポリシーを利用して起動・終了時に処理を行うには、以下のようにシャットダウン時のスクリプトを追加します。

[ローカルコンピュータポリシー]
  -[ユーザの構成]
     -[Windows の設定]
        -[スクリプト(ログオン/ログオフ)]
           -[シャットダウン]
              -[追加]
vmware-cmd 再び

ここで、前回得た以下のコマンドを「スクリプト名」と「スクリプトのパラメータ」に指定します。 個人的に終了時のSuspendが必要でしたので、サンプルはシャットダウン時のスクリプト例です。

    vmware-cmd.bat "c:\Program Files\VMware\linux.vmx" suspend
    vmware-cmd.bat "c:\Program Files\VMware\linux.vmx" start

これで、終了時に実行させるスクリプトを指定することができました。

そして再起動を行い、VMware Server Console で状態を確認すると、Suspend が成功してました!!

動作を確認する ~失敗編~

上記では、「ローカルコンピュータポリシー」の「ユーザの構成」へスクリプトを追加しましたが、始めのうちは、「コンピュータの構成」へスクリプトを追加しました。 コンピュータの構成のシャットダウンスクリプトへ設定も済んだ事ですし、折角なので動作確認をしてみようということで、再起動!!
........
......
...
..
.
起動したので、VMware Server Console で状態を確認すると、なんとサスペンドではなく停止していました…。
よくよく調べてみると、[コンピュータの構成]->[Windows の設定]で設定したスクリプトはバックグラウンドで動いているVMWare関連のサービス停止後に動いていることが判明しました。そりゃゲストOSは終了するって。

サービス停止前に止めるにはどうしようか悩みましたが、ユーザのログオン/オフ時に起動される[ユーザの構成]->[Windows の設定]で設定すればとりあえずサービス停止前にスクリプトを実行することができることがわかり、そちらへスクリプトを移動。
「ログオフしてもVMを動かしていたい!」といったリクエストにはお応えできません。あしからず。

おまけ

上記スクリプトの追加などは以下のファイルを直接編集しても可能です。
保存された中身を確認すればすぐわかります。

C:\WINDOWS\System32\GroupPolicy\User\Scripts\scripts.ini
C:\WINDOWS\System32\GroupPolicy\Machine\Scripts\scripts.ini


長々と書きましたが、VMWarePlayer であれば Suspend|Resume の機能が利用できるので、イメージを作成するとか複数のVMを管理すとかが不要であれば Player の利用も検討してみてはいかがでしょうか。