http://www.cnwr.com/automating-veeam-with-powershell/

The powershell script:

# VM names separated by commas
$VMNames = VM1, VM1

# vCenter name/IP
$HostName = 10.30.10.140

# Directory that VM backups should go to
$Directory = \\10.30.10.85\Veeam

# Desired compression level, following compression level from Veeam (Optional)
$CompressionLevel = 4

# Quiesce VM when taking snapshot (Optional; VMware Tools are required; Possible values: $True/$False)
$EnableQuiescence = $True

# Protect resulting backup with encryption key (Optional; $True/$False)
$EnableEncryption = $False

# Encryption Key (Optional; path to a secure string, C:\SecureString.txt
$EncryptionKey =

# Retention settings (Optional; By default, VeeamZIP files are not removed and kept in the specified location for an indefinite period of time.
# Possible values: Never , Tonight, TomorrowNight, In3days, In1Week, In2Weeks, In1Month)
$Retention = In3days

# Email Settings

# Enable notification (Optional)
$EnableNotification = $True

# Email SMTP server
$SMTPServer = smtp.smtp.com

# Email FROM
$EmailFrom = sender@cnwr.com

# Email TO
$EmailTo = recipient@cnwr.com

# Email subject
$EmailSubject = Veeam Backup Job
# Email formatting

$style = <style>BODY{font-family: Arial; font-size: 10pt;}
$style = $style + TABLE{border: 1px solid black; border-collapse: collapse;}
$style = $style + TH{border: 1px solid black; background: #54b948; padding: 5px; }
$style = $style + TD{border: 1px solid black; padding: 5px; }
$style = $style + </style>

##################################################################
# End User Defined Variables
##################################################################

#################### DO NOT MODIFY PAST THIS LINE ################
Asnp VeeamPSSnapin

$Server = Get-VBRServer -name $HostName
$mbody = @()

foreach ($VMName in $VMNames)
{
$VM = Find-VBRViEntity -Name $VMName -Server $Server
$ZIPSession = Start-VBRZip -Entity $VM -Folder $Directory -Compression $CompressionLevel -DisableQuiesce:(!$EnableQuiescence) -AutoDelete $Retention

If ($EnableNotification)
{
$TaskSessions = $ZIPSession.GetTaskSessions()
$FailedSessions = $TaskSessions | where {$_.status -eq EWarning -or $_.Status -eq EFailed}

if ($FailedSessions -ne $Null)
{
$mbody = $mbody + ($ZIPSession | Select-Object @{n=Name;e={($_.name).Substring(0, $_.name.LastIndexOf(())}} ,@{n=Start Time;e={$_.CreationTime}},@{n=End Time;e={$_.EndTime}},Result,@{n=Details;e={$FailedSessions.Title}})
}

Else
{
$mbody = $mbody + ($ZIPSession | Select-Object @{n=Name;e={($_.name).Substring(0, $_.name.LastIndexOf(())}} ,@{n=Start Time;e={$_.CreationTime}},@{n=End Time;e={$_.EndTime}},Result,@{n=Details;e={($TaskSessions | sort creationtime -Descending | select -first 1).Title}})
}

}
}
If ($EnableNotification)
{
$Message = New-Object System.Net.Mail.MailMessage $EmailFrom, $EmailTo
$Message.Subject = $EmailSubject
$Message.IsBodyHTML = $True
$message.Body = $mbody | ConvertTo-Html -head $style | Out-String
$SMTP = New-Object Net.Mail.SmtpClient($SMTPServer)
$SMTP.Send($Message)
}

computer2know :: thank you for your visit :: have a nice day :: © 2018