Hyper-V上の仮想マシンに対して、エクスポートを行うコマンドをPowerShellから送信してみたいと思います。
仮想マシンをエクスポートするには、WMIのMsvm_VirtualSystemManagementServiceクラスのExportVirtualSystemを使います。
■環境
- PowerShell v2
- Hyper-V 2.0
■Msvm_VirtualSystemManagementServiceを作ります。
$vm_manager = gwmi -Namespace root\virtualization -Class Msvm_VirtualSystemManagementService
■ExportVirtualSystemのパラメーターに、エクスポートするComputerSystemとエクスポート先をあたえます。
$vm_manager.ExportVirtualSystem("<ComputerSystem>", $TRUE, "<エクスポート先のパス>")
■サンプル1
c:\tempフォルダ内に、VM-1の仮想マシンをエクスポートします。
$ns = "root\virtualization"
$vm_target = "VM-1"
$vm_export_path = "c:\temp\"
$vm_manager = gwmi -Namespace $ns Msvm_VirtualSystemManagementService
$vm = gwmi -Namespace $ns Msvm_ComputerSystem -Filter "ElementName = '$vm_target'"
$vm_manager.ExportVirtualSystem($vm, $TRUE, $vm_export_path)
■結果
C:\Users\xxxxxx>tree c:\temp /F
フォルダー パスの一覧
ボリューム シリアル番号は 2ACB-67C9 です
C:\TEMP
└─VM-1
│ config.xml
│
├─Snapshots
│ 7F746104-31D3-43AB-B27D-7B5CBF5C9B5C.exp
│ C1BC4D4A-504C-4638-BCE5-2714BC7CED14.exp
│
├─Virtual Hard Disks
│ VM-1.vhd
│ VM-1_07684CED-1AC1-4648-8BD7-EAA7350A19E6.avhd
│ VM-1_F3286AE5-1F35-4CB7-B46F-B1FF3BBBA89E.avhd
│
└─Virtual Machines
49503C87-7399-44EA-A43D-5D73A81EA4FE.exp
なお、2個目のパラメーターのbool値を$FALSEに変更した場合の結果は、下記のようになり、vhdファイルのエクスポートは行いません。
C:\Users\xxxxxx>tree c:\temp /F
フォルダー パスの一覧
ボリューム シリアル番号は 2ACB-67C9 です
C:\TEMP
└─VM-1
│ config.xml
│
├─Snapshots
│ 7F746104-31D3-43AB-B27D-7B5CBF5C9B5C.exp
│ C1BC4D4A-504C-4638-BCE5-2714BC7CED14.exp
│
├─Virtual Hard Disks
│ VM-1_07684CED-1AC1-4648-8BD7-EAA7350A19E6.avhd
│ VM-1_F3286AE5-1F35-4CB7-B46F-B1FF3BBBA89E.avhd
│
└─Virtual Machines
49503C87-7399-44EA-A43D-5D73A81EA4FE.exp
■サンプル2
Hyper-V上の仮想マシン全てに対して、「C:\temp」フォルダにVHDファイルなしでエクスポートします。
$ns = "root\virtualization"
$vm_export_path = "c:\temp\"
$vmCollection = gwmi -Namespace $ns Msvm_Computersystem -Filter "Description = 'Microsoft Virtual Machine'"
$vmCollection | foreach {
$vm_manager = gwmi -Namespace $ns Msvm_VirtualSystemManagementService
$Result = $vm_manager.ExportVirtualSystem($_, $FALSE, $vm_export_path)
Start-Sleep -Milliseconds 1000
}
■参考
ExportVirtualSystemに関しては、下記のMSDNをご覧ください。
http://msdn.microsoft.com/en-us/library/cc136793%28VS.85%29.aspx