Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShellでHyper-V仮想マシンを管理する方法【基本操作と実用コマンド集】

この記事では、PowerShellコンソールからHyper-V仮想マシン(VM)を管理する方法を詳しく解説します。仮想スイッチや仮想マシンの作成、VM設定の変更、日々の運用管理など、手動操作にもPowerShellスクリプトによるタスク自動化にも活用できる実用的なコマンドを多数紹介します。

Hyper-V役割の有効化方法(Windows Server / Windows 10・11)

Hyper-V役割をインストールするには、SLAT(Second Level Address Translation)に対応し、仮想化支援機能を備えたCPUが必要です。Windows Serverでは、管理者権限のPowerShellで次のコマンドを実行します。

Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

デスクトップ版(Windows 10 / Windows 11)の場合は、以下のコマンドでHyper-Vを有効化します。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All

Hyper-Vホストを管理するには、Hyper-V PowerShellモジュールがコンピューターにインストールされている必要があります。利用可能なコマンドの一覧(Windowsのバージョンにより内容が異なります)は、次のコマンドで確認できます。

Get-Command -Module hyper-v

PowerShellでHyper-V仮想マシンを管理する方法【基本操作と実用コマンド集】

なお、Windows Server 2022では、Hyper-Vモジュールに245個のコマンドレットが用意されています。

Hyper-Vホストの設定情報をすべて表示するには、次のコマンドを使用します。

Get-VMHost|fl *

利用可能なCPUコア数とRAM容量だけを確認したい場合は、以下のように必要なプロパティのみを選択して表示すると見やすくなります。

Get-VMHost| select LogicalProcessorCount, MemoryCapacity

PowerShellでHyper-V仮想マシンを管理する方法【基本操作と実用コマンド集】

Hyper-Vホストの設定を変更するにはSet-VMHostコマンドレットを使用します。次の例では、仮想ディスクとVM構成ファイルの既定の保存先パスを変更しています。

Set-VMHost -VirtualMachinePath E:\VMs -VirtualHardDiskPath E:\VMs\VHD'

PowerShellでHyper-V仮想スイッチを作成する

まず、Hyper-Vホスト上に仮想スイッチを作成しましょう。仮想マシンは、仮想スイッチを経由しない限りネットワークにアクセスできません。

Hyper-Vホスト上で利用可能な物理ネットワークアダプターの一覧を表示するには、次のコマンドを実行します。

Get-NetAdapter | where {$_.status -eq "up"}

サーバーがSR-IOV(Single-Root Input/Output Virtualization)に対応している場合は、仮想スイッチの作成時にこのオプションを有効化してください。既存のvSwitchに対してSR-IOVを後から有効にすることはできないため注意が必要です。

外部仮想スイッチを作成するコマンド例は以下の通りです。

New-VMSwitch -Name "ExternalVMSwitch" -AllowManagementOS $True -NetAdapterName Ethernet0 -SwitchType External

PowerShellでHyper-V仮想マシンを管理する方法【基本操作と実用コマンド集】

PowerShellでHyper-V仮想マシンを作成する

新しいHyper-V仮想マシンを作成するには、New-VMコマンドレットを使用します。次の例では、RAM 1GB、10GBのVHDX仮想ディスクを備えた第2世代(Generation 2)のVMを作成しています。

$VMName = "mun-prx2"
$VM = @{
Name = $VMName
MemoryStartupBytes = 1Gb
Generation = 2
NewVHDPath = "E:\HV\$VMName\$VMName.vhdx"
NewVHDSizeBytes = 10Gb
BootDevice = "VHD"
Path = "E:\HV\$VMName"
SwitchName = "ExternalVMSwitch"
}
New-VM @VM

PowerShellでHyper-V仮想マシンを管理する方法【基本操作と実用コマンド集】

同様の手順で、Hyper-V上にWindows 11仮想マシンを作成することもできます。

続いて、作成済みVMの設定を変更するための主なコマンドを見ていきましょう。

VMのRAMサイズを増やす場合:

Get-VM -Name mun-prx2| Set-VMMemory -StartupBytes 2Gb

仮想CPU(vCPU)の数を変更する場合:

Set-VMProcessor mun-prx2 -Count 2

Hyper-V仮想マシンの自動起動を有効にする場合:

Get-VM –VMname mun-prx2 | Set-VM –AutomaticStartAction Start

VMに追加の仮想ディスクを接続する場合は、まずVHDXファイルを作成します。

New-VHD -Path 'C:\VM\new-prx2-drive.vhdx' -SizeBytes 2GB

その後、作成した仮想ディスクをVMに接続します。

Add-VMHardDiskDrive -VMName mun-prx2 -Path 'C:\VM\new-prx2-drive.vhdx'

PowerShellによるHyper-V仮想マシンの管理方法

Hyper-Vホスト上の仮想マシン一覧を表示するには、次のコマンドを使用します。

Get-VM

PowerShellでHyper-V仮想マシンを管理する方法【基本操作と実用コマンド集】

このコマンドは、基本的なプロパティとともにVMの一覧を返します。すべてのVMプロパティを確認するには、以下を実行します。

Get-VM -Name mun-dmz1 | fl *

実行中のVMだけを表示する場合:

Get-VM | where {$_.State -eq 'Running'}

仮想マシンを起動する場合:

Start-VM -Name mun-app01

停止状態にあるすべての仮想マシンを一括起動する場合:

Get-VM | where {$_.State -eq 'Off'} | Start-VM

VMをシャットダウンする場合(ゲストOS内の統合サービスを利用した正規のシャットダウン):

Stop-VM -Name mun-app01

強制的に電源をオフにする場合は、TurnOffオプションを指定します。

Stop-VM -Name mun-app01 –TurnOff

応答しなくなったHyper-V VMの停止方法については、別途解説記事を参照してください。

ISOファイルを仮想CD/DVDドライブにマウントする場合:

Set-VMDvdDrive -VMName mun-app01 -Path c:\iso\WinSrv2022.iso

USBパススルー機能を使えば、USBデバイス(メディアやドライブ)をHyper-V VMにリダイレクトすることも可能です。

VMを停止せずにすべてのVMファイルを別のディスクへ移行するには、次のコマンドを使用します。

Move-VMStorage mun-app01 -DestinationStoragePath D:\VM\mun-app01

仮想ディスクファイルの拡張や縮小には、Resize-VHDコマンドレットを使用します。

Resize-VHD -Path 'C:\VM\mun-fs01.vhdx' -SizeBytes 50Gb

VMのチェックポイント(スナップショット)を作成する場合:

Get-VM -Name mun-app01| Checkpoint-VM -SnapshotName "Before upgrading SAP"

利用可能なチェックポイントの一覧を表示する場合:

Get-Vm -Name mun-app01| Get-VMCheckpoint

PowerShellでHyper-V仮想マシンを管理する方法【基本操作と実用コマンド集】

チェックポイントからVMを以前の状態に復元する場合:

Restore-VMCheckpoint -Name "Before upgrading SAP" -VMName mun-app01 -Confirm:$false

スナップショットを削除する場合:

Remove-VMCheckpoint -VMName mun-app01 -Name "Before upgrading SAP"

Hyper-VにおけるVMのエクスポート、インポート、複製(クローン)の詳細は、専用の解説記事をご覧ください。エクスポートの基本的なコマンドは以下の通りです。

Export-VM -Name mun-app01 -Path 'C:\VHD\export' -CaptureLiveState CaptureCrashConsistentState

また、Windows Serverに標準搭載されているWindows Server Backup(WSB)を利用して、Hyper-V仮想マシンをバックアップすることもできます。

仮想マシンのゲストOSに割り当てられたIPアドレスを取得する場合:

Get-VM | Select -ExpandProperty NetworkAdapters | Select VMName, IPAddresses, Status

仮想マシンのコンソールに接続する場合:

vmconnect.exe localhost mun-app01

PowerShellでHyper-V仮想マシンを管理する方法【基本操作と実用コマンド集】

さらに、PowerShell Directを使用すると、vmbus経由で仮想マシンのゲストOSに直接接続できます(Windows Server 2016、Windows 10以降で利用可能)。スクリプトの実行にはInvoke-Commandを、対話型のPowerShellセッションにはEnter-PSSessionを使用します。

Invoke-Command -VMName mun-app01 -ScriptBlock {Get-Process}
Enter-PSSession -VMName mun-app01

PowerShell Directを使ってHyper-Vホストから仮想マシンへファイルをコピーする場合は、次のようにコマンドを実行します。

$PSSession = New-PSSession -VMName mun-app01 -Credential (Get-Credential)
Copy-Item -ToSession $PSSession -Path E:\ISO\install_image.iso -Destination D:\ISO\

以上のように、PowerShellを使えばHyper-V仮想マシンをローカルでもリモートでも柔軟に管理できます。Windows ServerのFull GUI / Server Coreモード、無償のMicrosoft Hyper-V Server、Windows 10 / 11環境のいずれにも対応しており、Hyper-VマネージャーやWindows Admin Centerといったグラフィカルツールと組み合わせれば、より効率的な運用が実現できます。

  1. 【Hyper-V 2019入門】PowerShellを使って仮想マシンを作成する手順をわかりやすく解説

    仮想マシンの作成方法には、GUI(グラフィカルユーザーインターフェース)を使用する方法と、PowerShellを使用する方法の2つがあります。これまでの記事でも触れたように、両方の選択肢がある場合、多くのIT管理者は直感的に操作できるGUIを選びがちです。しかし、PowerShellを使いこなせるようになると、作業の自動化や一括管理が可能になり、業務効率は格段に向上します。本記事では、Hyper-V 2019環境においてPowerShellで仮想マシンを作成する具体的な手順を解説します。なお、PowerShellはWindowsクライアントおよびWindows Serverの各OSに標準搭載さ

  2. VMware Converterで仮想マシンを変換する方法を徹底解説

    仮想化は、ソフトウェアのテストやデバッグ、同一デスクトップ上での複数OSの同時稼働、ハードウェアコストの削減、そしてシステムのモジュール性と効率の向上など、多くのメリットをもたらす優れた技術です。パワーユーザーにとっては、時間と費用を節約しながら、通常では手を出しづらいタスクにも挑戦できる強力な手段となります。仮想化とは、その名の通り仮想マシンを活用することであり、これらの仮想マシンは仮想ハードディスク上に保存されます。 しかし問題があります。各仮想化製品はそれぞれ独自のファイルシステム形式を採用しているのです。例えばVirtualBoxとVMwareを併用している場合、両者の作成する仮想マシ