本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Start-VM」「Stop-VM」「Restart-VM」コマンドレットを解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「Hyper-V」の仮想マシンを起動する「Start-VM」コマンドレット、仮想マシンを停止する「Stop-VM」コマンドレット、仮想マシンを再起動する「Restart-VM」コマンドレットです。
Hyper-Vの仮想マシンも物理的なコンピュータと同様に、「電源状態」が存在します。仮想マシンに電源が投入されれば「起動状態」に遷移し、電源がオフになれば「停止状態」となります。物理コンピュータでの「電源投入」が「仮想マシンの起動」という操作に相当します。電源操作はGUI(グラフィカルユーザーインタフェース)ツール「Hyper-Vマネージャー」であれば、仮想マシンのメニューやコンソールから実施できます(画面1)。
当然のことながら、これらの電源操作はWindows PowerShellでも実施可能です。仮想マシンを起動する(電源投入する)コマンドレットがStart-VMコマンドレット、仮想マシンを停止するコマンドレットがStop-VMコマンドレット、仮想マシンを再起動するコマンドレットがRestart-VMコマンドレットです。
今回は、これらの仮想マシンの電源操作に関わるコマンドレットをまとめて紹介します。
【注】Start-VM/Stop-VM/Restart-VMは「Windows PowerShell用Hyper-Vモジュール」に含まれるコマンドレットになります。GUIの「Windowsの機能の有効化」や「役割と機能の追加」からHyper-Vを有効化するか、PowerShellから「Enable-WindowsOptionalFeature」コマンドレットを使用して有効化します。
| オプション | 意味 |
|---|---|
| -Name | 仮想マシン名を指定する |
| -ComputerName | リモートのHyper-Vホストの仮想マシンを起動する場合にコンピュータ名を指定する。省略可能 |
| オプション | 意味 |
|---|---|
| -Name | 仮想マシン名を指定する |
| -Save | 仮想マシンを保存状態にする。省略可能 |
| -TurnOff | 電源断処理を行う。省略可能 |
| -Force | 仮想マシンが5分以内にシャットダウンできなかった場合に強制的にシャットダウン処理を実行する。また、応答プロンプトを非表示にする。省略可能 |
| -ComputerName | リモートのHyper-Vホストの仮想マシンを停止する場合、コンピュータ名を指定する。省略可能 |
| オプション | 意味 |
|---|---|
| -Name | 仮想マシン名を指定する |
| -Force | 応答プロンプトを非表示にする。省略可能 |
| -ComputerName | リモートのHyper-Vホストの仮想マシンを再起動する場合にコンピュータ名を指定。省略可能 |
必須オプションの「-Name」オプションで停止状態の仮想マシン名を指定してStart-VMコマンドレットを実行すると、仮想マシンが起動します(画面2)。なお、Start-VMコマンドレットは管理者権限での実行が必要となります。
Start-VM -Name "Gen2-VM"
仮想マシン名に特定の文字列が含まれるなど、条件を指定してそれに一致した複数の仮想マシンを一斉起動させることも可能です。その場合、起動する仮想マシンを絞り込むために本連載118回で紹介した「Get-VM」コマンドレットを使用します。
例えば、仮想マシン名に「Test」が含まれる仮想マシンをGet-VMコマンドレットと「Where-Object」コマンドレット(whereと省略可能)で取得し、それをパイプ(|)でつないでStart-VMコマンドレットに渡すことで、Get-VMコマンドレットで取得した仮想マシン群を一斉に起動できます(画面3)。
Get-VM | Where {$_.Name -like "*Test*" } | Start-VM
その他、第1世代仮想マシンを全て起動させるなど、Get-VMコマンドレットを駆使することで意図した仮想マシン群を同時起動できるようになります。また、「-Name」オプションで「*」を指定することで、Hyper-Vホスト上の全ての仮想マシンを起動することも可能です(画面4)。
Start-VM -Name *
起動状態の仮想マシンを停止する場合は、Stop-VMコマンドレットを使用します。必須オプションである「-Name」オプションで仮想マシン名を指定することで、指定した仮想マシンを停止できます(画面5)。なお、Stop-VMコマンドレットは管理者権限での実行が必要となります。
Stop-VM -Name "Gen2-VM"
画面5のように「-Name」オプションのみを指定してStop-VMコマンドレットを実行した場合は、ゲストOSに「統合サービス」が導入されていれば、ゲストOS上での正常なシャットダウン処理を経た安全な停止が行われます(画面6)。
統合サービスが導入されていない環境では、以下の画面7のように「安全にシャットダウンできない」旨の警告メッセージが表示されます。この操作は、メッセージにもある通り、物理コンピュータでの「電源ケーブル抜去」に相当します。従って、この操作で停止した仮想マシンでは「予期せぬシャットダウン」イベントが記録されることを念頭に置き、問題がなければ[y]キーで応答します。
なお、この応答プロンプトを表示させたくない場合は「-Force」オプションを併用します。
Stop-VMコマンドレットもStart-VMコマンドレットと同様、Get-VMコマンドレットを併用することで、仮想マシン群を同時にシャットダウンしたり、「-Name」オプションで「*」を指定することで、Hyper-Vホスト上の全仮想マシンに対してシャットダウン処理を行ったりできます(画面8)。
Stop-VM -Name *
既に停止状態にある仮想マシンに対してもシャットダウン処理が行われますが、「既に指定された状態」として処理はスキップされます。
Stop-VMコマンドレット実行時に、対象の仮想マシンでアプリケーションが開いていた場合は、以下の画面9のようにシャットダウン処理が実施できない場合があります。
Stop-VMコマンドレットはこの状態で5分間待機しますが、状態に変化がなかった場合は停止処理に失敗します(画面10)。
このような状態で強制的にシャットダウンを実施するには、「-Force」オプションを利用します。このオプションが併用された場合は、シャットダウンを阻害しているアプリケーションを含めて強制的なシャットダウンが実施され、仮想マシンが停止します(画面11)。
Stop-VM -Name "Test-VM01" -Force
シャットダウンを阻害していた原因が画面9のようにアプリケーション上のデータが未保存であることだった場合は、アプリケーションデータは保存されずにそのままシャットダウンされてしまうので注意してください。
Stop-VMコマンドレットで「-TurnOff」オプションを利用すると、ゲストOSの状態を問わずに電源断処理が行われます(画面12)。いわゆる「電源ケーブル抜去」に相当しますが、画面7のような警告メッセージは表示されずにそのまま仮想マシンが停止するので、実行の際は仮想マシンの指定に注意が必要です。
Stop-VM -Name "Test-VM01" -TurnOff
Stop-VMコマンドレットで「-Save」オプションを付与した場合は、シャットダウンを伴う停止処理ではなく、仮想マシンの保存処理が行われます(画面13)。
Stop-VM -Name "Test-VM01" -Save
ここでの「保存」とは、仮想マシンのシャットダウンではなく、コマンドレットを実行した瞬間の仮想マシンのメモリ状態などをファイルへ書き出し、その時点の動作状況が保存された状態を指します。保存された仮想マシンは、仮想マシンを起動(Start-VMコマンドレットを実行)することで、保存された時点の状態がそのまま復元されます。
起動状態の仮想マシンを再起動する場合は、Restart-VMコマンドレットを使用します。必須オプションである「-Name」オプションで仮想マシン名を指定することで、指定した仮想マシンを再起動できます(画面14)。なお、Restart-VMコマンドレットは管理者権限での実行が必要となります。
Restart-VM -Name "Test-VM01"
Restart-VMコマンドレットを実行すると、実行確認のプロンプトが表示されます。再起動する仮想マシンに間違いがなければ[y]キーで応答します。
しかし、再起動は「Stop-VM -TurnOff」コマンドレットと同様の停止処理となるため、ゲストOSから見ると「強制電源断」になり、起動後のデスクトップには「予期しないシャットダウン」の画面が表示されてしまいます。
そのため、Restart-VMコマンドレットは操作不能になった仮想マシン、もしくはゲストOSのシャットダウン処理が必要ない仮想マシンに対してのみ実施し、Windows OSをはじめとする安全なシャットダウン処理が必要な仮想マシンに対しては、それが望めない場合にのみ実施するようにしましょう。
また、Restart-VMコマンドレット実行時は応答プロンプトが表示されてしまいます。スクリプトでの実行などでは応答プロンプトの表示は好ましくないため、「-Force」オプションを付与することで応答プロンプトを非表示にできます(画面15)。
Restart-VM -Name "Test-VM01" -Force
株式会社ネットワールド所属。Microsoft MVP for Cloud and Datacenter Management(2012-2026)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.