What am I doing wrong?

PowerShell script exchange

What am I doing wrong?

Veeam Logoby robicon » Tue Jun 04, 2013 8:01 pm

Code: Select all
asnp "VeeamPSSnapin"

$vmlist = Import-CSV C:\Scripts\create-servers.csv

# map out variables
$vmname = $item.name
$vcserver = $item.vcserver
$veeamjobname = "MMS-CORP"
$vbrjob = Get-VBRJob | Where {$_.Name -eq $veeamjobname}
$veeamserver = Get-VBRServer | Where {$_.Type -eq "VC"}



foreach ($item in $vmlist) {
write-host adding $item.name to Veeam Backup $item.backupjob
Add-VBRJobObject -Job $vbrjob -Server $veeamserver -Object $item.name | out-null
#just the test the varible
echo $item.backupjob 
}



This works but as soon as I replace $veeamjobname = "MMS-CORP" to $veeamjobname = item.backupjob it breaks.

here is the output

PS C:\Scripts> .\veeambu.ps1
adding dc02dbc01s04 to Veeam Backup MMS-CORP
Add-VBRJobObject : Cannot bind parameter 'Job'. Cannot convert the "MMS-CORP" value of type "System.String" to type
"Veeam.Backup.Core.CBackupJob".
At C:\Scripts\veeambu.ps1:18 char:23
+ Add-VBRJobObject -Job $veeamjobname -Server $veeamserver -Object $item.name | ou ...
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Add-VBRJobObject], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Veeam.Backup.PowerShell.Command.AddVBRJobObject

MMS-CORP
adding dc02dbc01s05 to Veeam Backup MMS-CORP
Add-VBRJobObject : Cannot bind parameter 'Job'. Cannot convert the "MMS-CORP" value of type "System.String" to type
"Veeam.Backup.Core.CBackupJob".
At C:\Scripts\veeambu.ps1:18 char:23
+ Add-VBRJobObject -Job $veeamjobname -Server $veeamserver -Object $item.name | ou ...
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Add-VBRJobObject], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Veeam.Backup.PowerShell.Command.AddVBRJobObject


any input is welcomed!
robicon
Lurker
 
Posts: 2
Liked: never
Joined: Tue Jun 04, 2013 7:54 pm
Full Name: Robbi Hatcher

Re: What am I doing wrong?

Veeam Logoby tsightler » Tue Jun 04, 2013 10:07 pm 1 person likes this post

You can't use the $item variable outside of the loop because don't actually define it until you start the loop so you're effectively just setting these values to NULL. It works when you manually enter the job name "by chance" because you're also not using the server name to actually find the vCenter server but rather are querying all servers and then filtering on the server that is the "VC" type (vCenter) which I assume you only have one of.

You need to move your variable assign logic into the loop if you want to use the values from the list.
tsightler
Veeam Software
 
Posts: 4768
Liked: 1737 times
Joined: Fri Jun 05, 2009 12:57 pm
Full Name: Tom Sightler

Re: What am I doing wrong?

Veeam Logoby robicon » Wed Jun 05, 2013 12:20 am

Thanks! that did it!

Just starting to learn powershell. This makes way more sense to me now! :)
robicon
Lurker
 
Posts: 2
Liked: never
Joined: Tue Jun 04, 2013 7:54 pm
Full Name: Robbi Hatcher


Return to PowerShell



Who is online

Users browsing this forum: No registered users and 5 guests