はじめに (対象読者・この記事でわかること)

本記事は、Windows Server の管理者や、Hyper-V 上で仮想マシン(VM)を運用しているエンジニアを対象としています。
Hyper-V マネージャや PowerShell を用いて、VM を「作成→停止→削除」するだけでなく、ディスクイメージ(.vhd/.vhdx)やスナップショット、レジストリ情報まで完全に除去したい方に最適です。

この記事を読むことで、以下が実現できます。

  • Hyper-V マネージャと PowerShell の両方で VM を安全に削除する手順の全体像が把握できる。
  • 残存する仮想ハードディスクやチェックポイント(スナップショット)を確実に削除する方法が分かる。
  • 削除作業中に起こりやすいエラーやハングアップの原因と対処法を具体的に学べる。

VM の再利用やストレージの確保が必要な現場で、不要なリソースが残らないようにするために執筆しました。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。

  • Windows Server (2016 以降) または Windows 10/11 の Hyper-V 機能が有効化されていること。
  • 基本的な PowerShell の操作経験(Get-CommandRemove-Item など)。
  • Hyper-V マネージャの UI 操作に慣れていること。

Hyper-V における「完全削除」の必要性と概要

Hyper-V では、仮想マシンを削除しただけでは以下のような残存データが残ることがあります。

残存対象 具体例 問題点
仮想ハードディスク (VHD/VHDX) VM のディスクが別フォルダに保存されているケース ストレージが圧迫され、再利用が困難になる
スナップショット(チェックポイント) 手動/自動で取得されたチェックポイント 旧状態が残り、削除時にロックがかかることがある
仮想スイッチの設定 仮想スイッチに紐付く NAT やブリッジ設定 他の VM で競合が発生する恐れ
レジストリ / WMI の参照情報 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization 削除済み VM がリストに残り、管理ツールがエラーを出す

「完全削除」とは、上記すべてを確実に除去し、システムに残っている不要なメタデータをクリーンアップすることです。これにより、ストレージの節約、運用上のトラブル回避、そしてセキュリティ面でも「使用済みのイメージが漏洩しない」ことが保証されます。

完全削除の具体的手順

以下では、GUI と PowerShell の両方で実施できる手順を順を追って解説します。実際の環境に合わせて好きな方を選んでください。

ステップ 1: 対象 VM の状態を確認し、停止させる

  1. GUI
    - Hyper-V マネージャを起動し、対象 VM を右クリック → 「電源のオフ」 を選択。
    - 状態が Off になるまで待つ(停止が完了しない場合は「シャットダウン」→「強制停止」でも可)。

  2. PowerShell
    powershell $vmName = "MyTestVM" # VM の状態取得 Get-VM -Name $vmName | Format-Table Name, State # 停止(Graceful シャットダウンを試み、失敗したら強制停止) Stop-VM -Name $vmName -Force

ポイント:VM が実行中のまま削除すると、仮想ハードディスクがロックされて削除に失敗します。必ず Off 状態を確認してください。

ステップ 2: チェックポイント(スナップショット)の一覧取得と削除

  1. GUI
    - VM を選択 → 右クリック → 「チェックポイントの削除」 を選ぶ。
    - 複数ある場合は「すべて削除」ボタンを使用。

  2. PowerShell
    ```powershell # チェックポイント(スナップショット)一覧取得 Get-VMSnapshot -VMName $vmName

# すべて削除 Get-VMSnapshot -VMName $vmName | Remove-VMSnapshot -Confirm:$false ```

ハマりポイント:チェックポイントが大量に残っていると削除に時間がかかります。-AsJob オプションでバックグラウンドジョブ化すると作業が楽になります。

ステップ 3: 仮想ハードディスク (VHD/VHDX) の場所を特定し、手動で削除

  1. GUI
    - VM の設定 → 「ハードドライブ」 → 「参照」ボタンでファイルパスを確認。
    - パスをメモし、エクスプローラで該当ファイルを削除。

  2. PowerShell
    ```powershell # 仮想ハードディスクのパス取得 $vhdPath = (Get-VMHardDiskDrive -VMName $vmName).Path Write-Host "VHD Path: $vhdPath"

# ファイル削除(-Force で読み取り専用でも削除) Remove-Item -Path $vhdPath -Force ```

注意:ディスクが共有ストレージや別の VM で参照されている可能性があります。Get-VMHardDiskDrive で他の VM が同一ディスクを使用していないか事前に確認してください。

ステップ 4: VM 自体を Hyper-V から削除

  1. GUI
    - VM を右クリック → 「削除」。確認ダイアログで「はい」。

  2. PowerShell
    powershell Remove-VM -Name $vmName -Force

ポイント-Force を付けると確認無しで削除できますが、誤削除防止のためにスクリプト実行前に $vmName が正しいか必ず確認しましょう。

ステップ 5: レジストリ・WMI の残存情報をクリーンアップ(任意)

ほとんどの場合、Remove-VM でメタデータは削除されますが、稀に残っていることがあります。

Powershell
# WMI の VM インスタンスを一覧表示 Get-CimInstance -Namespace root\virtualization\v2 -ClassName Msvm_ComputerSystem | Where-Object {$_.ElementName -eq $vmName} # 該当インスタンスが残っている場合は削除 Get-CimInstance -Namespace root\virtualization\v2 -ClassName Msvm_ComputerSystem | Where-Object {$_.ElementName -eq $vmName} | Remove-CimInstance

ハマった点Remove-CimInstance が失敗する場合は、対象インスタンスが他のプロセスでロックされている可能性があります。サーバーを再起動してから再度実行すると解決することが多いです。

ハマった点やエラー解決

エラー 原因 解決策
Remove-VM : The virtual machine is currently running. VM が Running のまま削除しようとした Stop-VM -Force で強制停止後に再試行
Remove-Item : Access to the path '...' is denied. ディスクが別プロセスにロックされている Get-Process でロック元を特定し終了、またはサーバー再起動
Get-VMSnapshot : No snapshots found. 実はチェックポイントが無い このステップはスキップして問題なし
Remove-CimInstance : Invalid class WMI 名前空間が異なる Windows Server のバージョンに合わせて root\virtualization\v2 を使用

まとめ

本記事では、Hyper-V 上の仮想マシンを 完全に削除 する手順を解説しました。

  • VM の停止 → チェックポイント削除 → ディスクファイル削除 → VM 自体の削除 のフローを網羅。
  • PowerShell と GUI の併用で、どちらの環境でも確実に残存リソースを除去できる。
  • 削除作業中に頻出するエラーとその対処法を具体例とともに提示。

この記事を通じて、ストレージの無駄遣いを防ぎ、運用上のトラブルを未然に防止 できるようになったはずです。次回は「Hyper-V のバックアップとリストアのベストプラクティス」について取り上げる予定ですので、ぜひご期待ください。

参考資料