เราสามารถ 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