Today Veeam announced their new major release: Veeam Backup and Replication 6.1.

This major release includes several improvements and some interesting new additions.

Version 6.1 includes a new capability for performing ad-hoc backups. In many ways, it functions like a zip utility for VMs. For this reason, it’s called VeeamZIP.

  • Backup a VM on-the-fly: Instead of running the regular backup job (which typically contains multiple VMs and a specified number of restore points) or creating a new backup job, simply VeeamZIP the VM.
  • Archive a VM: VeeamZIP is a powerful weapon in the fight against VM sprawl. You no longer need to keep unused VMs just in case someone comes around later asking for them. Instead, VeeamZIP and then delete unused VMs. It’s a great way to reclaim expensive production storage.
  • Copy a VM: To install the VM in a new location, simply restore it from the backup using Veeam Backup & Replication or Veeam BackupTM Free Edition.

Veeam Backup Free Edition
Version 6.1 introduces a new free mode. The free mode, called Veeam Backup Free Edition, provides a subset of the functionality in the full (paid) editions of Veeam Backup & Replication, including VM and file recovery. So if you ever need to perform a restore but don’t have access to a Veeam backup server, you can simply download and install Veeam Backup Free Edition. You don’t need a license key, and you can recover VMs, VM files and guest files.

1 disadvantage (in my opinion): this will also install SQL Express on your local server.

New console
Version 6.1 introduces a new console!

There are 4 main enhancements:

  • Use of Microsoft design standards. (Think of the Office ribbon 😉 )
  • Dynamic nodes.
  • Extensibility.
  • Instant search.

vPower for Hyper-V
Version 6.1 extends Veeam’s patent-pending vPower technology—as well as Instant VM Recovery—
to Hyper-V. vPower runs a VM directly from a compressed and deduplicated backup file on regular backup storage. You can run a VM from any restore point (full or incremental), without changing the backup. vPower enables Instant VM Recovery, which lets you restart a failed VM from a regular backup in as little as 2 minutes.

Besides these big changes there are also a few minor fixes and updates. Here are a few:

  • View and restore from Windows Explorer
  • Shared backup proxy servers and repositories
  • Concurrent job limit
  • Backup proxy server replication
  • Disabling inline deduplication
  • ReFS support
  • Hot Add improvement on VMware

For a complete update on all the new sweet goodies I suggest reading the What’s New PDF.

Veeam proves again that they are the #1 for VM Backups!

Veeam logo

It seems today is free goodies day at least thanks to Veeam. Today they released a FREE version of Veeam ONE “Free, powerful and easy-to-use VMware management”.

Quote taken from their website:

Veeam ONE Free Edition is a risk-free way to experience firsthand the many benefits that Veeam ONE brings to virtualization management. With no restrictions on the number of vCenter Servers and ESX(i) hosts you can manage, Veeam ONE Free Edition lets you see how 24×7 monitoring, management reporting and more can improve the performance and availability of your virtual environment.

Basically you can run the free version and if you like it you can upgrade to a full version. Veeam was also kind enough to make us an overview PDF with the differences between the FREE and FULL edition.

Veeam One offers administrators the following options:

  • Real-time monitoring and alerting
  • Storage monitoring
  • Advanced alerting capabilities
  • Easy documentation and management reporting
  • Saves time and cost
  • Customizable dashboard
  • Gain a business view of your virtual environment
  • “Set and forget” dynamic categorization
  • Prioritize resource allocation and control VM sprawl

If you like what you read go and check it out and see for yourself. This product is amazing and… it is FREE!

Veeam logo
Veeam Backup & Replication comes with a few built-in PowerShell cmdlets. Sadly I couldn’t find a cmdlet which allows me to monitor running Veeam FLR sessions.

Keep in mind that this post only works when you run a FLR which is a non-Windows virtual machine!!

When you perform a restore, Veeam Backup & Replication will start an extra virtual machine which runs with the name VeeamFLR-SERVERNAME-randomhash. The script below will see if a restore is running for a defined amount of hours and then update you with an e-mail.

# Script to determine running Veeam FLR sessions (type: Other OS)
# E-mails a small overview with open sessions with XX hours uptime

# Fill in below
# Set the vCenter Server address
$vcenter = "hostname/ip"
# Set the SMTP Server address
$smtp = ""
# Set the Email address to receive from
$emailfrom = ""
# Set the Email address to send the email to
$emailto = ""
# Set the Email subject
$emailsubject = "Veeam FLR Session Running!"
# Uptime a session can have before sending an e-mail (defined in hours)
$hours = "1"

# Don't change below!
New-VIProperty -ObjectType VirtualMachine -Name BootTime
-ValueFromExtensionProperty Summary.Runtime.BootTime -Force | Out-Null

# E-mail function
function Send-Mail($to, $from, $subject, $smtpserver, $body) {
	$mailer = new-object Net.Mail.SMTPclient($smtpserver)
	$msg = new-object Net.Mail.MailMessage($from, $to, $subject, $body)
	$msg.IsBodyHTML = $false

# Connect to vCenter
Connect-VIServer -Server $vcenter | Out-Null

# Store sessions in a variabele
$runningsessions = @()

# Loop through VM's starting with "VeeamFLR"
foreach ($vm in Get-VM | where {$_.Name.ToLower().Contains("veeamflr")} |
Select Name, BootTime) {
	if ($vm.BootTime -ne $null) {
		$boottime = [DateTime]::Parse($vm.BootTime.ToLocalTime().DateTime)
		$uptime = [DateTime]::Now.Subtract($boottime)
		$upthours = [int]::Parse($uptime.Hours)
		if ($upthours -gt $hours) {
			$runningsessions += $vm.Name + " `r`n"

# Only send an e-mail if there are running sessions
if ($runningsessions -ne $null) {
	$body = "Veeam FLR report:`r`n"
	$body += "===============`r`n`r`n"
	$body += $runningsessions | Sort-Object

	# Send the e-mail
	Send-Mail -to $emailto -from $emailfrom -subject $emailsubject
-smtpserver $smtp -body $body

# Disconnect from vCenter
Disconnect-VIServer -Server $vcenter -Confirm:$false | Out-Null

You can automate this task by running the script as a scheduled task.


Veeam Backup & Replication is a great tool for backing up your virtual environment. U can use it to backup certain virtual machines or your whole environment by simply creating backup jobs in which u add virtual machines. Veeam has the option which sends an e-mail if a backup was successful or failed.

Sadly there is one thing I couldn’t find and it’s an option to check which virtual machines are being backed up and which are not in a virtual environment.

After some thinking I decided to combine Veeam and PowerCLI as a solution to my problem.

When a job is created there is an advanced option to add a note to a virtual machine which can be used for scripts.

When creating a job click “Advanced” when the following screen appears.

Once the advanced settings open, go to the notifications tab and select “Set successful backup details to this VM attribute”. Change the value from “Notes” to “Backup”.

Every time the job finishes successful Veeam will add an annotation called “Backup” to the virtual machine as seen on the picture below.

Below is a script which will collect all virtual machines in the defined vCenter and run a check on the backup annotation. This will perform a check if the backup was successful in the past 2 days. Finally it will send an overview in plain text via mail.

Please change the required settings on top of the script!

# Set the vCenter Server
$vcenter = "localhost"
# Set the SMTP Server address
# Set the Email address to receive from
$EmailFrom = ""
# Set the Email address to send the email to
$EmailTo = "<RECEIVER>"
# Set the Email subject
$EmailSubject = "Veeam Backup Information"

# SMTPmail function
function Send-SMTPmail($to, $from, $subject, $smtpserver, $body) {
	$mailer = new-object Net.Mail.SMTPclient($smtpserver)
	$msg = new-object Net.Mail.MailMessage($from,$to,$subject,$body)
	$msg.IsBodyHTML = $false

# Get Backedup function
function Get-Backedup ($vm) {
	$val = $vm.CustomFields |where {$_.key -eq "Backup" } | select -Property Value
	$today = Get-Date -Format "d/MM/yyyy"
	$yesterday = get-date -format "d/MM/yyyy" -displayhint date ((get-date).adddays(-1))
	$backupDate = $val.Value
	if ( $backupDate -like "*$today*" -or $backupDate -like "*$yesterday*"  ) {
		$res = 1
	} else {
		$res = 0
	return ( $res )

Connect-VIServer $vcenter | Out-Null

$vms = Get-VM


foreach ($vm in $vms) {
	if (Get-Backedup($vm)) {
		$resultok += "$vm `r`n"
	} else {
		$resultnotok += "$vm `r`n"

$body = "==================================================`r`n"
$body += "Backup report $vcenter:`r`n"
$body += "==================================================`r`n`r`n"
$body += "The following VMs have NOT been backed up:`r`n"
$body += "---------------------------------------------------------------`r`n"
$body += $resultnotok | Sort-Object
$body += "`r`n`r`nThe following VMs have been backed up:`r`n"
$body += "--------------------------------------------------------`r`n"
$body += $resultok | Sort-Object

send-SMTPmail -to $EmailTo -from $EmailFrom -subject $EmailSubject -smtpserver $SMTPSRV -body $body

That’s it. Feel free to improve the script or give hints and tips!