Solved

Veeam Start-VBRZip powershell script (ET)

Posted on 2016-10-11
10
57 Views
Last Modified: 2016-10-19
I am trying to write a powershell script to perform VeeamZIP on certain VMs. This article explains how to do it (page 746) but i cannot seem to get it right because i keep getting errors with my syntax.
https://www.veeam.com/pdf/guide/veeam_backup_9_0_powershell_reference_en.pdf

This is what i wrote so far:
Add-PSSnapin VeeamPSSnapin
$ServerName = Find-VBRHvEntity -Server localhost -Name 'OSNY2k12PS01'
Start-VBRZip -Folder "D:\VMBackup" -Entity $ServerName -Compression 5 -DisableQuiesce -AutoDelete In1Week

Open in new window


Also i have about 10 vms that i want to run this on. Can i combine them all into one script so it starts the next server when the previous one finishes.
0
Comment
Question by:tabush
  • 6
  • 4
10 Comments
 
LVL 39

Accepted Solution

by:
footech earned 500 total points
Comment Utility
I'd suggest checking out this blog.  There are a couple sample scripts (for Hyper-V and VMWare) at the bottom of the page you can download (and I have used, at least the VMWare one).  You can supply the names of multiple VMs and it will loop through them.

Just looking at your commands above, I don't see any problem.  You may want to verify that your Find-VBRHvEntity command returns the right object.  Other that than, you'd have to show which errors you're getting.  But the sample scripts are your best bet.
0
 
LVL 2

Author Comment

by:tabush
Comment Utility
Which blog are you referring to? Think you forgot to post the link.
0
 
LVL 39

Assisted Solution

by:footech
footech earned 500 total points
Comment Utility
Damn.  I thought you could see my screen...
:)

Sorry about that.
https://www.veeam.com/blog/veeam-backup-free-edition-now-with-powershell.html
0
 
LVL 2

Author Comment

by:tabush
Comment Utility
In the script it asks to specify
"Name of vCenter or standalone host VMs to backup reside on"
What would the name of my vCenter be? I dont want to specify host because i have more than one.
Would it be the IP or one of the names below that?

2016-10-13-14_38_27-osny2k12bkup01.n.png
0
 
LVL 2

Author Comment

by:tabush
Comment Utility
I tried it with NYC ESX and this is the error im getting:

At C:\Users\networkadmin\Desktop\VeeamZIP.ps1:21 char:2
+ - High, 9 - Extreme)
+  ~
Missing expression after unary operator '-'.
At C:\Users\networkadmin\Desktop\VeeamZIP.ps1:21 char:3
+ - High, 9 - Extreme)
+   ~~~~
Unexpected token 'High' in expression or statement.
At C:\Users\networkadmin\Desktop\VeeamZIP.ps1:21 char:7
+ - High, 9 - Extreme)
+       ~
Missing argument in parameter list.
At C:\Users\networkadmin\Desktop\VeeamZIP.ps1:21 char:20
+ - High, 9 - Extreme)
+                    ~
Unexpected token ')' in expression or statement.
At C:\Users\networkadmin\Desktop\VeeamZIP.ps1:117 char:101
+ ... | select -first
+                    ~
Missing closing ')' in expression.
At C:\Users\networkadmin\Desktop\VeeamZIP.ps1:119 char:1
+ 1).Title}})
+ ~
Unexpected token '1' in expression or statement.
At C:\Users\networkadmin\Desktop\VeeamZIP.ps1:117 char:38
+ {$_.EndTime}},Result,@{n="Details";e={($TaskSessions | sort creationtime -Descen ...
+                                      ~
Missing closing '}' in statement block.
At C:\Users\networkadmin\Desktop\VeeamZIP.ps1:119 char:2
+ 1).Title}})
+  ~
The hash literal was incomplete.
At C:\Users\networkadmin\Desktop\VeeamZIP.ps1:79 char:1
+ {
+ ~
Missing closing '}' in statement block.
At C:\Users\networkadmin\Desktop\VeeamZIP.ps1:119 char:11
+ 1).Title}})
+           ~
Unexpected token ')' in expression or statement.
Not all parse errors were reported.  Correct the reported errors and try again.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingExpressionAfterOperator

and in the script that i wrote (posted above) this is the error i was getting:

Find-VBRHvEntity : Cannot process argument transformation on parameter 'Server'. Host with name 'localhost'
was not found
At C:\Users\networkadmin\Desktop\Veeam Backup Script.ps1:2 char:40
+ $ServerName = Find-VBRHvEntity -Server localhost -Name 'OSNY2k12PS01'
+                                        ~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Find-VBRHvEntity], ParameterBindingArgumentTransformationExc
   eption
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Veeam.Backup.PowerShell.Command.FindVBRHv
   Entity
 
Start-VBRZip : Cannot validate argument on parameter 'Entity'. The argument is null. Provide a valid value
for the argument, and then try running the command again.
At C:\Users\networkadmin\Desktop\Veeam Backup Script.ps1:3 char:44
+ Start-VBRZip -Folder "D:\VMBackup" -Entity $ServerName -Compression 5 -DisableQu ...
+                                            ~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Start-VBRZip], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Veeam.Backup.PowerShell.Commands.Backup.Start
   VBRZip
0
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 
LVL 39

Expert Comment

by:footech
Comment Utility
In your screenshot above, it looks like your vCenter would be the 192.168.x.x address.  Below that is the Datacenter, Cluster, then hosts.

Make sure to use the hostname as you see it in Veeam (I think it's always the full FQDN).

Looks like all those errors are likely from a poor copy and paste of the script, or maybe editing with something that changed the file, or a missing quote.

Lastly, are you backing up Hyper-V or VMWare?  Make sure you're using the right cmdlet for each.
0
 
LVL 2

Author Comment

by:tabush
Comment Utility
I downloaded the script straight to the server this time so no copy-pasting but getting a different error now.
It seems that its not recognizing the $server variable

Find-VBRViEntity : Cannot validate argument on parameter 'Server'. The argument is null. Provide a valid
value for the argument, and then try running the command again.
At C:\Users\networkadmin\Downloads\VeeamZIP-VI-updated\VeeamZIP (VI - updated).ps1:76 char:48
+   $VM = Find-VBRViEntity -Name $VMName -Server $Server
+                                                ~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Find-VBRViEntity], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Veeam.Backup.PowerShell.Command.FindVBRViEnti
   ty
 
Start-VBRZip : Cannot validate argument on parameter 'Entity'. The argument is null. Provide a valid value
for the argument, and then try running the command again.
At C:\Users\networkadmin\Downloads\VeeamZIP-VI-updated\VeeamZIP (VI - updated).ps1:86 char:40
+     $ZIPSession = Start-VBRZip -Entity $VM -Folder $Directory -Compression $Comp ...
+                                        ~~~
    + CategoryInfo          : InvalidData: (:) [Start-VBRZip], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Veeam.Backup.PowerShell.Commands.Backup.Start
   VBRZip
0
 
LVL 39

Expert Comment

by:footech
Comment Utility
Is the $Hostname variable set correctly for your environment?  Make sure the following line returns info.
Get-VBRServer -name $HostName

Open in new window

The script uses that to set the $server variable.  And then that is used in the next command.
Find-VBRViEntity -Name $VMName -Server $Server

Open in new window

Running that command manually should also return info.
0
 
LVL 2

Author Comment

by:tabush
Comment Utility
Sorry for the delayed response. Yes that command worked.
I also did ECHO $HostName
and it did output the correct hostname that i entered.
0
 
LVL 2

Assisted Solution

by:tabush
tabush earned 0 total points
Comment Utility
Think i figured it out!
For hostname i had to enter the IP address because that's how we have it listed within Veeam.
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

This script checks a path to see if a folder exists. If the folder does exist you will get output "The folder has previously been created. No action taken" If not it will create the folder. Then adds one user modify permission to the folder. It …
Synchronize a new Active Directory domain with an existing Office 365 tenant
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now