本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Export-VM」コマンドレットを解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「Hyper-V」の仮想マシンを可搬性のある形式に書き出す「Export-VM」コマンドレットです。
Hyper-Vホスト上で稼働する仮想マシンを他のHyper-Vホストに移動したい場合、同じネットワーク上に移動先のHyper-Vホストが存在していれば、本連載第154回で紹介した「Move-VM」コマンドレットで移動できます。
例えば、ネットワークに接続していないHyper-Vホストへ仮想マシンを移動するというシナリオを考えてみましょう。
対象のHyper-Vホストにオフラインで移動させる必要があるため、仮想マシンの構成ファイルや仮想ハードディスクを可搬性のあるメディア(USBドライブなど)に書き出す必要があります。
その際には、仮想マシンを構成する各種ファイルを漏れなくコピーする必要があり、これを手動で実施した場合にはコピー漏れなどで移動先のHyper-Vホストで読み込みできないという事故が発生することも考えられます。
このため、Hyper-Vには「エクスポート」という機能があり、これを用いることで仮想マシンの構成ファイルや仮想ハードディスクを読み込み可能な形式で単一のフォルダに書き出すことができます。
この操作をGUI(グラフィカルユーザーインタフェース)ツールである「Hyper-Vマネージャー」で行う場合は、仮想マシンを選択して「エクスポート」を実行し、書き出すフォルダを指定します。こうすることで、仮想マシンを構成する全ファイルを読み込み可能な形式で書き出すことができます(画面1)。
エクスポート操作はPowerShellでも実施可能で、今回紹介するExport-VMコマンドレットを使用します。
【注】Export-VMは「Windows PowerShell用Hyper-Vモジュール」に含まれるコマンドレットです。GUIの「Windowsの機能の有効化」や「役割と機能の追加」からHyper-Vを有効化するか、PowerShellから「Enable-WindowsOptionalFeature」コマンドレットを使用して有効化します。
| オプション | 意味 |
|---|---|
| -Name | 仮想マシン名を指定する |
| -Path | エクスポート先のフォルダ名を指定する |
| -CaptureLiveState | 実行中の仮想マシンのエクスポート方式を指定する。省略可能 |
| -ComputerName | リモートのHyper-Vホストの仮想マシンをエクスポートする場合にコンピュータ名を指定する。省略可能 |
必須オプションである「-Name」オプションでエクスポートする仮想マシン名を、「-Path」オプションでエクスポート先のフォルダを指定してExport-VMコマンドレットを実行することで、仮想マシンをエクスポートできます(画面2)。なお、Export-VMコマンドレットは管理者権限での実行が必要となります。
Export-VM -Name "Test-VM01" -Path "D:\Export"
画面2では、Export-VMコマンドレット実行後に「-Path」オプションで指定したフォルダを確認しています。エクスポート先フォルダの配下に仮想マシン名のフォルダが作成されていることが分かります。
また、そのフォルダ配下にさらにフォルダが作成され、サブフォルダに仮想マシンの各種ファイルがエクスポートされています。この仮想マシン名のフォルダを可搬性メディアにコピーすることで、オフラインで仮想マシンを搬送できます。
複数の仮想マシンをまとめてエクスポートしたい場合は、本連載第118回で紹介した「Get-VM」コマンドレットを併用します。
エクスポートしたい仮想マシンをGet-VMコマンドレットで抽出(下記実行例では「Where-Object」〈whereと省略可能〉で名前に「Gen」が含まれる仮想マシンを抽出)し、パイプ(|)でつないでExport-VMコマンドレットを「-Path」オプションのみを指定して実行します(画面3)。Get-VMコマンドレットを用いたことで仮想マシンの指定が完了しているため、「-Name」オプションは省略可能となっています。
Get-VM | where {$_.Name -like "Gen*"} | Export-VM -Path "D:\Export"
実行中の仮想マシンをエクスポートする場合は、メモリ状態をはじめとする仮想マシンの状態をどのように扱ってエクスポートするかを指定できます。
「-CaptureLiveState」オプションでエクスポートする状態を指定できますが、「運用チェックポイント」を取得する場合と同様にデータ整合性がとれた状態でエクスポートを実施したい場合は、オプションの値に「CaptureDataConsistentState」を指定します(画面4)。
Export-VM -Name "Test-VM01" -Path "D:\Export" -CaptureLiveState CaptureDataConsistentState
クラッシュ整合性がとれた状態でエクスポートする場合は、オプションの値に「CaptureCrashConsistentState」を指定します(画面5)。
Export-VM -Name "Test-VM01" -Path "D:\Export" -CaptureLiveState CaptureCrashConsistentState
クラッシュ整合性については、以下のMicrosoftのドキュメントをご確認ください。
メモリ状態を含めてエクスポートしたい場合は、オプションの値に「CaptureSavedState」を指定します(画面6)。
Export-VM -Name "Test-VM01" -Path "D:\Export" -CaptureLiveState CaptureSavedState
値として「CaptureSavedState」を指定してエクスポートした仮想マシンをインポートした場合は、画面7のように保存状態でインポートされます。
株式会社ネットワールド所属。Microsoft MVP for Cloud and Datacenter Management(2012-2026)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.