我想使用 Veeam 的免费版本在 Windows Hyper-V 2016 服务器上备份我的虚拟机。该工具的免费版本不提供定期备份的工具,因此我一直在寻找一种将其 API 与任务调度程序结合使用的方法。
在寻找解决方案的过程中,我遇到了这篇文章,其中包含了我所需要的所有详细信息:
https://blog.mwpreston.net/2015/04/29/scheduling-veeam-backup-free-edition-backups/
Param(
[Parameter(Mandatory=$true)][string]$VM,
[Parameter(Mandatory=$true)][string]$Destination,
[Parameter(Mandatory=$true)][ValidateSet(0,4,5,6,9)][int]$Compression,
[bool]$DisableQuiesce=$true,
[Parameter(Mandatory=$true)][ValidateSet("Never","Tonight","TomorrowNight","In3days","In1Week","In2Weeks","In1Month")][string]$Autodelete
)
#Load Veeam Toolkit
& "C:\Program Files\Veeam\Backup and Replication\Backup\Initialize-VeeamToolkit.ps1"
#Validate any parameters
$vmentity = Find-VBRViEntity -Name $VM
if ($vmentity -eq $null)
{
Write-Host "VM: $VM not found" -ForegroundColor "red"
exit
}
if (-Not (Test-Path $Destination))
{
Write-Host "Destination: $vmname not valid" -ForegroundColor "red"
exit
}
if ($DisableQuiesce -eq $true)
{
Start-VBRZip -Entity $vmentity -Folder $destination -Compression $Compression -AutoDelete $Autodelete -DisableQuiesce
}
else
{
Start-VBRZip -Entity $vmentity -Folder $destination -Compression $Compression -AutoDelete $Autodelete
}
但是,此页面上的 sript 仅支持备份单个 VM。我可以创建许多这样的脚本,但是最好有一个循环通过 VM 的脚本。
我想这就像循环遍历所有 VM 一样简单,但由于我没有使用 powershell 脚本的经验,也没有使用 Veeam,我正在寻找一些帮助/帮助来修改脚本以备份所有 VM。该页面的评论中有一些关于此的讨论,但似乎该博客文章已经更新,因此它不直接适用。
例如这样的:
(get-vm -ComputerName YOURSERVERFQDN | foreach { $_.Name }) -join "`",`"" | Tee-Object -Variable VMNames | Out-Null
额外的好处是在失败时添加某种电子邮件通知,但这有点超出了这个问题的主题。