かつて山市良と呼ばれたおじさんのブログ
セイテクエンジニアのブログ かつて山市良と呼ばれたおじさんのブログ vol.234 VMの開始/停止とコンソール接続の小技|Hyper-V 小技・裏技集
2026年09月14日配信
執筆者:山内 和朗
「Hyper-V小技・裏技集」シリーズでは、Hyper-Vの仮想環境を利用していて、知っていると便利な小技や裏技を紹介します。今回は、仮想マシン(VM)の起動からコンソール接続までをPowerShellから実行する、知らない人から見たらすごいことをしているように見えるエレガントな小技です。
| ※いよいよ今週開催です。この連載の今後の内容を先出ししてご紹介! お知らせ. 9月17日(木)開催! 第8回 セイテク・シス管道場 ーPowerShellで極める Hyper-V 運用管理 |
Hyper-VホストのPowerShellで次の2行のコマンドラインを実行すると、ローカルのHyper-Vホスト上の指定したVMを開始し、仮想マシン接続(vmconnect.exe)ツールを使用してコンソールに接続することができます。
| Start-VM -Name "VM名" vmconnect localhost "VM名" |
もう少し処理を加えてみましょう。次のコマンドラインを実行すると、VMの現在の状態が「オフ」「保存完了」「一時停止」のいずれかの場合はVMを開始し、VMの状態が「実行中」になるまで待機し、その後、仮想マシン接続でVMのコンソールに接続します(画面1、画面2)。while句の直前にもう一度Get-VMを実行しないと無限ループになるのではという疑問を持つかもしれませんが、必要ありません。その点を含めて、Get-VMに関しては次回詳しく取り上げる予定です。
|
$vmName = "vm01" |

画面1 PowerShellからVMを開始して、仮想マシン接続ツールでコンソールに接続する
リファレンス(Microsoft Learn):
Start-VM(Hyper-V)| Get-VM(Hyper-V)| Hyper-V 仮想マシン接続
「Hyper-Vマネージャーや仮想マシン接続ツールにある「シャットダウン」「停止」「保存」「一時停止」「再開」「リセット」「チェックポイント」「戻す」操作についても、対応するPowerShellのコマンドラインを以下に示しておきます。
| Stop-VM -Name "VM名" -Force | シャットダウン(画面2) |
| Stop-VM -Name "VM名" -TurnOff | 停止(VMの電源を突然オフに相当) |
|
Stop-VM -Name "VM名" -Save Save-VM -Name "VM名" |
保存 |
| Suspend-VM -Name "VM名" | 一時停止 |
| Resume-VM -Name "VM名" | 再開 |
| Restart-VM -Name "VM名" -Force | リセット(※ハードリセットであり、再起動ではありません) |
| Checkpoint-VM -Name "VM名" [-SnapshotName "チェックポイント名"] | チェックポイント(の作成) |
| Get-VM -Name "VM名" | Get-VMSnapshot | Sort CreationTime | Select -Last 1 | Restore-VMSnapshot -Confirm:$false | (最新のチェックポイントに)戻す |
| vmcoonect localhost(またはコンピューター名) "VM名" | 接続 |

画面2 PowerShellからVMのシャットダウン(して停止)を開始する
リファレンス(Microsoft Learn):
Stop-VM(Hyper-V)| Save-VM(Hyper-V)| Suspend-VM(Hyper-V)| Restart-VM(Hyper-V)
フェールオーバークラスター(Hyper-Vホストクラスター)上のVMの制御については、VMを実行中の所有者ノード(Hyper-Vホスト)を特定し、VM操作用の各コマンドレットの-ComputerNameパラメーターに所有者ノードを指定して実行します。ただし、VMの開始については、Start-VMではなく、Start-ClusterGroupを使用することを推奨します。Start-VMでクラスター上のVMを開始しようとすると、クラスターサービスによってVMは問題なく起動しますが、Start-Vは次のようなエラーを返します。
start-VM : 'vm01' は起動できませんでした。Microsoft Emulated IDE Controller (インスタンス ID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX): 電源をオンにできませんでした。エラー 'アクセスが拒否されました。'。...
次のコマンドラインは、指定したVMのクラスターグループ(役割)を開始し、仮想マシン接続ツールを、そのクラスターグループの所有者ノードのVMに接続します(画面3)。なお、ホストクラスター上のノードの1台で実行する場合は、-Clusterパラメーターは省略できます。クラスターの外部から操作する場合は、操作元のコンピューターに「RSAT: フェールオーバー クラスタリング ツール」と「Hyper-V 管理ツール」が必要です。
| $vmName = "vm01" $ClusterName = "mycluster" $Group = Get-ClusterGroup -Cluster $ClusterName -Name $vmName $OwnerNode = $Group.OwnerNode.Name Start-ClusterGroup -Cluster $ClusterName -Name $vmName vmconnect.exe $OwnerNode $vmName |

画面3 クラスター上のVMを開始して、仮想マシン接続ツールを所有者ノードのVMに接続する
VMのクラスターグループをオフラインにするには、次のコマンドラインを実行します。VMがどのような状態で停止されるかは、仮想マシンクラスターリソースの「クラスター制御されたオフライン操作」に指定されているオフラインアクション(既定は「保存」)に依存します(画面4)。
| $vmName = "vm01" $ClusterName = "mycluster" Stop-ClusterGroup -Cluster $ClusterName -Name $vmName |

画面4 Stop-ClusterGroupは、仮想マシンクラスターリソースのオフラインアクションを実行する
クラスターリソースのオフラインアクションに依存するのではなく、VMのシャットダウンや保存を実行するには、次のように所有者ノードを指定してVMに対してStop-VMやSave-VMを実行します(画面5)。
| $vmName = "vm01" $ClusterName = "mycluster" $Group = Get-ClusterGroup -Cluster $ClusterName -Name $vmName $OwnerNode = $Group.OwnerNode.Name #シャットダウン Stop-VM -ComputerName $OwnerNode -Name $vmName -Force #保存 Save-VM -ComputerName $OwnerNode -Name $vmName |

画面5 その他のVM操作に示したコマンドレットは、VMの所有者ノードを指定して実行すればよい
リファレンス(Microsoft Learn)
Get-ClusterGroup(FailoverClusters)| Start-ClusterGroup(FailoverClusters)| Stop-ClusterGroup(FailoverClusters)
Hyper-V 小技・裏技集 (1)|(2)|(3)