PowerShell を使用して Hyper-V VM を起動および停止する方法

Windows 11 または Windows 10 ホスト マシンに Hyper-V をインストールまたは有効にした後、さまざまな目的で別のオペレーティング システム (ゲスト OS) を実行するための VM を作成できます。この投稿では、PowerShell を使用して Hyper-V VM を起動および停止する方法について説明します。

PowerShell を使用して Hyper-V VM を起動および停止する方法

Hyper-V マネージャーを使用して、仮想マシンを手動で起動および停止できます。PowerShell の Start-VM および Stop-VM コマンドレットは、仮想マシンを起動/停止します。Hyper-V モジュールで使用可能なコマンドレットを使用して、Hyper-V ホストで実行されている 1 つ以上の仮想マシンを起動/停止できます。

PowerShell を使用して Hyper-V で仮想マシンを起動または停止するには、対応するコマンドレットを実行します。コマンドは、VMName パラメーターで指定された仮想マシン VM-1 を起動/停止します。

Start-VM -VMName VM-1
Stop-VM -VMName VM-1

既定では、Start-VM コマンドレットは出力を返しません。そのため、-PassThru パラメーターを使用して出力を生成し、パイプラインに渡してから Get-VM コマンドレットを使用して VM のステータスを返すことができます。対応する構文は次のようになります。

Start-VM -VMName VM-1 -Passthru | Get-VM

VM の状態を保存して停止するには、次に示すように -Save パラメーターを使用する必要があります。

Stop-VM -VMName VM-1 -Save

PowerShell を使用して Hyper-V で複数の仮想マシンを起動または停止するには、対応するコマンドレットを実行します。コマンドは、VM で始まる名前を持つすべての仮想マシンを起動/停止します。

Start-VM -VMName VM*
Stop-VM -VMName VM*

応答しない Hyper-V VM を停止する方法

Hyper-V 仮想マシンをシャットダウンしようとしているときに、仮想マシンがハングすることがあります。この問題が発生すると、Hyper-V マネージャーで、シャットダウン中のステータスで応答しなくなった影響を受ける VM が表示されます。さらに、ゲスト OS が応答しなくなると、Hyper-V マネージャーの [電源オフ]、[シャットダウン]、[リセット] ボタンが灰色表示され、押すと次のエラーが返されるため、PowerShell Stop-VM -Force コマンドまたは通常の制御を使用して VM を強制的にシャットダウンすることはできません。

VM の状態を変更しようとしてアプリケーションでエラーが発生しました。
状態を変更できませんでした。
オブジェクトが現在の状態にある間は、操作を実行できません。

この場合、クライアント Hyper-V を使用している場合は、サーバーまたは PC をシャットダウンするのではなく (これは 1 つの方法ですが、これはやりすぎです)、次の方法を使用して応答しない VM を強制的にシャットダウンできます。

  1. PowerShell
  2. タスク マネージャーまたはプロセス エクスプローラー

各方法の手順を見てみましょう。

1] PowerShell を使用して応答しない Hyper-V VM を停止する

  • 管理者モードで PowerShell を開きます。
  • 以下のコマンドを入力して Enter キーを押し、すべての VM の GUID の出力を取得します。応答しない VM の名前を知る必要があります。
Get-VM
  • VM 名がわかったら、以下のコマンドを実行します。VM_NAME プレースホルダーを停止する VM の名前に置き換えます。
$VmGUID = (Get-VM 'VM_NAME').id
  • 次に、以下のコマンドを実行して VM のプロセス ID を見つけます。コマンドは、Win32_Process Windows Management Instrumentation (WMI) 名前空間を使用して、vmwp.exe と仮想マシンの GUID ($VmGUID) に一致する実行中の CPU プロセスを見つけます。
$VMWMProc = (Get-WMIObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VmGUID})
  • プロセス ID ($VMWMProc) がわかると、Stop-Process コマンドレットを実行してプロセスを強制終了できます。
Stop-Process ($VMWMProc.ProcessId) –Force

2] タスク マネージャーまたはプロセス エクスプローラーを使用して応答しない Hyper-V VM を停止する

Hyper-V ホスト上のすべての VM は、VM がスタックしている場合に強制終了する必要がある仮想マシン ワーカー プロセス vmwp.exe プロセス インスタンスを使用して起動されます。特定のプロセス PID を見つけるには、仮想マシンの GUID を調べる必要があります。

これらのいずれかの方法で、Hyper-V マネージャー コンソールを使用して VM GUID を取得できます。

  • Hyper-V サーバー設定を開きます。
  • サーバーセクションには、VM 構成ファイルが保存されているディレクトリが含まれています。
  • フォルダーを特定したら、エクスプローラーでディレクトリに移動します。
  • その場所で、スタックした仮想マシンの名前のフォルダーを見つけます。
  • *.vmcx拡張子の VM 構成ファイルの名前で指定されている GUID をコピーします。
  • 次に、タスク マネージャーを開き、詳細タブに移動します。
  • これで、ユーザー名列で、スタックしている VM の GUID を持つプロセス vmwp.exe を見つけて強制終了します。

同様に、次の手順に従ってプロセス エクスプローラー ツールを使用して、Hyper-V ホストでスタックした仮想マシン プロセスを見つけて停止することができます。

  • 管理者としてプロセス エクスプローラーを実行します。
  • 次に、Ctrl-Fキーの組み合わせを押すか、ハンドルまたは DLL を検索をクリックします。
  • 起動/停止状態にスタックしている Hyper-V VM の仮想ディスク (*.vhdx) へのパスを指定します。
  • プロセス エクスプローラーは、仮想マシン VHDX ファイルを使用しているすべてのプロセスを一覧表示します。
  • これで、vmwp.exe 仮想マシン プロセスを見つけます。
  • プロセスを右クリックして、メニューからプロセスを強制終了を選択します。

応答しない VM を強制的にシャットダウンするもう 1 つの方法は、管理者権限で PowerShell プロンプトを実行して以下のコマンドを実行し、Hyper-V サービスを停止することです。Restart-Service コマンドは、サーバーで実行中のすべての VM を強制的にシャットダウンします。Hyper-V サービス (vmms) を再起動するにはかなり時間がかかる場合があります。そのため、操作には停止してから再起動するまで数分かかる場合があります。

Get-Service vmms | Restart-Service

以上です!

VM のステータスを確認するにはどうすればよいですか?

VMware で個々の仮想マシンのステータスを確認するには、次の手順を実行します。

  • vSphere Client で、仮想マシンに移動します。
  • 更新タブで、ステータスの確認をクリックします。最近のタスク ペインにスキャン エンティティ タスクが表示されます。
  • タスクが完了すると、ステータス情報が VMware Tools と VM ハードウェア互換性パネルに表示されます。

VM がアイドル状態かどうかはどうすればわかりますか?

Google Cloud で VM をアイドル状態として分類するには、次の条件をすべて満たす必要があります。

  • CPU 使用率が VM ランタイムの 97% で 0.03 vCPU 未満であること。
  • 受信ネットワーク トラフィックが VM ランタイムの 95% で 2600 バイト/秒 (B/s) 未満であること。
  • 送信ネットワーク トラフィックが VM ランタイムの 95% で 1000 B/s 未満であること。