Export VM PowerOff to OVA with Powershell

เราสามารถ Export VM มาเก็บไว้บนเครื่องของเราเป็นไฟล์ OVA ได้ โดยใช้ Powershell แต่มีข้อจำกัดตรงที่สามารถใช้ได้เฉพาะ VM Power-Off อยู่เท่านั้น หาก Power-On จะใช้วิธีการ Clone VM เพื่อทำการ Export OVA เสร็จแล้วค่อยทำการ Delete


Directory Structure

เราจะใช้ Directory Structure เดิมที่เคยสร้างไว้ โดยจะประกอบไปด้วยโครงสร้างดังนี้

C:\powershell-script
├───Credential/
│   └───vcsa.lab.local.clixml
├───VM-Export/
│   └───OVA/
├───VM-List/
│   └───OVA.txt
└───VM-Script/
    ├───Configuration.ps1
    └───Export-OVA.ps1

Get Started

  • ทำการเพิ่ม Global Variable ขึ้นในไฟล์ Configuration.ps1
# VM-List
$Global:vm_ova = Get-Content ($root + 'VM-List\OVA.txt')

# VM-Export
$Global:path_export_ova = $root + 'VM-Export\OVA\'
  • ทำการสร้างไฟล์ Export-OVA.ps1
. "$PSScriptRoot\Configuration.ps1"
Connect-VIServer -Server $server -Credential $credential

$vm = $vm_ova
$path = $path_export_ova
$datastore = $datastore_backup

foreach ($line in $vm) {

	$name = 'Export-OVA-' + $date + '-' + $line
	$dsdc = Get-Datastore $datastore -Datacenter $datacenter

	try {

		New-VM -Name $name -VM $line -VMHost $vmhost -Datastore $dsdc -ResourcePool $resourcepool -ErrorAction Stop
		Get-VM -Name $line | Export-VApp -Destination $path -Format Ova
		Remove-VM $name -DeleteFromDisk -Confirm:$false -ErrorAction Stop

	} catch {

		# $ErrorMessage = $_.Exception.Message
    		# $FailedItem = $_.Exception.ItemName
		# $error += $line + "`r`n"

	}

}

Disconnect-VIServer -Server $server -Confirm:$false

อ่านเพิ่มเติม : https://bit.ly/2TC5Isg

Leave a Reply

Your email address will not be published. Required fields are marked *