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 を強制的にシャットダウンできます。
- PowerShell
- タスク マネージャーまたはプロセス エクスプローラー
各方法の手順を見てみましょう。
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 未満であること。
コメントする