Backup machines full copy via script
הסקריפט מבצע את הפעולות הבאות:
- יצירה של snapshot על המכונה הוירטואלית הקיימת
- מחיקת גיבוי ישן בשם המקורי של המכונה עם סיומת של –Backup
- שכפול המכונה דרך ה snapshot אל ה LUN: VMFS_XXX
- מחיקת ה snapshot מהמכונה המקורית
- שליחת מייל
ניתן לתזמן אותו כך:
pow
ershell.exe -PSConsoleFile "C:\Program Files\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" " & " C:\1host_utils\VMwareScripts\DuplicateVM.ps1"
הנה הסקריפט (מה שצבעתי בצהוב זה מה שניתן ורצוי לשנות)
$VC = Connect-VIServer localhost
$timestart = (Get-Date -f "HH:MM")
$vm = Get-Machine name
$cloneSnap = $vm | New-Snapshot -Name "Clone Snapshot"
$vmView = $vm | Get-View
$cloneFolder = $vmView.parent
$cloneSpec = new-object Vmware.Vim.VirtualMachineCloneSpec
$cloneSpec.Snapshot = $vmView.Snapshot.CurrentSnapshot
$cloneSpec.Location = new-object Vmware.Vim.VirtualMachineRelocateSpec
$cloneSpec.Location.Datastore = (Get-Datastore -Name VMFS_XXX | Get-View).MoRef
$cloneSpec.Location.Transform = [Vmware.Vim.VirtualMachineRelocateTransformation]::sparse
$cloneName = "$vm-Backup"
Remove-VM -DeletePermanently -VM $cloneName -Server localhost -confirm:$False
# Create clone
$vmView.CloneVM( $cloneFolder, $cloneName, $cloneSpec )
# Write newly created VM to stdout as confirmation
Get-VM $cloneName
# Remove Snapshot created for clone
Get-Snapshot -VM (Get-VM -Name machine name) -Name $cloneSnap | Remove-Snapshot -confirm:$False
#email
$timecomplete = (Get-Date -f "HH:MM")
$emailFrom = "admin@yourdomain"
$emailTo = "your@email.com"
$subject = "[$vm - Backup Complete]"
$body = "Backup Details
-------------
VM Name:",$vm,"
Clone Name:","$vm-$date","
Time Started:", $timestart,"
Time Completed:", $timecomplete
$smtpServer = "localhost"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom,$emailTo,$subject,$body)