Agendar cópias de segurança de edição livre Veeam para todos os VMs

Eu gostaria de usar a fersion livre da Veeam para fazer backup do meu VMs num servidor do Windows Hyper-V 2016. A versão livre da ferramenta não fornece uma ferramenta para fazer backups regulares, então eu estive olhando para uma maneira de usar sua API em combinação com o escalonador de Tarefas.

Na minha Busca por uma solução, deparei-me com este post, que explica tudo o que preciso.:

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
}

No entanto, o sript nesta página só suporta fazer backup de um único VM. Eu poderia criar muitos desses scripts, mas ter um único script que loops através do VMs seria preferível.

eu suponho que isto é tão fácil como looping através de todos os VMs, mas como eu não tenho nenhuma experiência powershell scripts, nem com Veeam, eu estou procurando alguma ajuda/assitância em modificar o programa para salvaguardar todos os VMs . Há algumas conversas sobre isso nos comentários nessa página, mas parece que o post do blog foi atualizado desde então, então ele não se aplica diretamente.

Por exemplo, algo assim:
(get-vm -ComputerName YOURSERVERFQDN | foreach { $_.Name }) -join "`",`"" | Tee-Object -Variable VMNames | Out-Null
Um Bônus seria adicionar algum tipo de notificação de E-mail sobre falha, mas isso está um pouco fora do tópico desta pergunta.

Author: bblue, 2017-09-24