Hyper-VのゲストOSを一時停止する。
Windows PowerShellをつかってHyper-VのゲストOSを一時停止するスクリプトを作ってみた。なにごとも簡単なのがいいので、PowerShell Management Library for Hyper-Vを利用してみた。
【使用環境】
OS:Windows Server 2008 R2
PowerShell management Library for Hyper-V
【PowerShell Management Library for Hyper-Vのインストール】
インストール方法はネットにいろいろ書いてあるが、以下のようにした。
PsHyperV.ZipをHyper-V R2 用の PowerShell 管理ライブラリ からダウンロードする。適当なフォルダーで展開すると、以下のものができる。
- HyperVフォルダ
- install.cmd
- PS_Console.REG
install.cmdの実行でインストールを行うのだが、こいつが曲者で、以下のようにしないと正常にインストールできなかった。
- install.cmdをダブルクリックして実行する。(いろいろエラーが出るが気にせずに続行する。)
- PS_Console.REGをダブルクリックして実行する。(これで、レジストリが正常に追加される)
- C:\Program Files\modules\HyperVフォルダを開き、中にあるすべてのファイルについて、[右クリック]-[プロパティ]-[ブロック解除]を根気よくおこなう。
【インストール結果の確認】
install.cmdの最後の行で行っている下記のコマンドをDOSプロンプトより実行してみる。
start %windir%\System32\WindowsPowerShell\v1.0\powershell.exe -noExit -Command “Import-Module ‘%ProgramFiles%\modules\hyperV’ ”
エラー(赤字)が表示されずにPowerShellの画面が起動すればOK
Get-VM と入力して、Virtual Machineのステータス一覧が表示されることを確認する。
【スクリプトの作成】
ここまでできれば後は簡単。以下の2つのテキストファイルをc:\に作った。
【仮想マシンを一時停止するスクリプト (vmSave.ps1)】
———————————————————————–
#Hyper-Vを一時停止させる
Import-Module “c:\Program Files\modules\hyperV”
$vms =get-vm -running
foreach($vm in $vms){
#仮想マシンが一時停止するまで処理を待つところがミソ
save-VM $vm -Wait -Force
}
exit
———————————————————————–
(メモ)停止を待たなくていいのなら以下のように一行で書ける。
Get-VM -Running | Save-VM
【vmSave.ps1を起動するバッチ (VmSaveAll.bat)】
———————————————————————–
powershell.exe -noExit c:\vmSave.ps1
———————————————————————–
このバッチを実行すれば仮想マシンは一時停止してくれる。
【その他】
ちなみにほかの使いそうなコマンドは
Stop-VM :仮想マシンのシャットダウン
Start-VM :仮想マシンの起動
PowerShell Management Library for Hyper-VはWindows Server 2012では標準で入っているらしいので、なんか安心w