Backup Copy Job Schedule

PowerShell script exchange

Backup Copy Job Schedule

Veeam Logoby sidavid » Sun Oct 27, 2013 2:58 pm

Hi,

I want to specify Schedule for Backup Copy Jobs but I do not know how to start. I have read the PDF powershell. I think I need to use the Set-VBRJobScheduleOptions command, but how?

Get-VBRJob -Name OFFSITE-DAILY* | foreach {
$vbrjobname = $_.Name
Write-Host $vbrjobname
Get-VBRJob -Name $vbrjobname | Set-VBRJobScheduleOptions -Options $"Schedule Options"
}

How to use Set-VBRJobScheduleOptions -Options $"Schedule Options" to set the schedule I want to be enable:
Sun from 06:00PM to Mon 03:00PM
Tue, Wed, Thu, Fri, Sat from 12:01AM to 03:00PM

Thanks a lot
sidavid
Enthusiast
 
Posts: 60
Liked: never
Joined: Sun Jan 01, 2006 1:01 am

Re: Backup Copy Job Schedule

Veeam Logoby tsightler » Sun Oct 27, 2013 9:08 pm

As mentioned in my reply to your other query, working with Backup Copies is a little different from other jobs since they always run in continuous mode but indeed you can use Set-VBRJobScheduleOptions to set the parameters.

Manipulating the "Allowed to run" schedule for continuous jobs via Powershell is pretty easy, however, there's one big caveat. While it's easy to change the schedule assuming the "During the following time periods" options is already selected in the GUI, so far I've been unable to figure out how to switch from the "Any Time (continous)" mode that is the default using Powershell. Assuming that the "During the following time periods" option is already selected in the GUI, then the following method should work fine. If any of the other Powershell gurus out there know how to actually enable the backup window option from Powershell I would like to know how.

The "Allowed to run" property is defined by an XML properly stored in the OptionsContinous.Schedule attribute so by creating such an object with the settings we want we can update the jobs with the new schedule. Each day is represented by a string of 0's and 1's for each of the 24 hours starting from midnight. A "0" means the job can run, while a "1" means the job is blocked from processing during that time. Knowing that infomation we can build our attribute. The code below build a schedule that matches your request (I think):

Code: Select all
# Create Allowed Schedule Property
$AllowedtoRun = "<scheduler><Sunday>1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0</Sunday><Monday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Monday><Tuesday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Tuesday><Wednesday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Wednesday><Thursday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Thursday><Friday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Friday><Saturday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Saturday></scheduler>"

Get-VBRJob -Name "OFFSITE-DAILY*" | foreach {
   Write-Host $_.Name
   # Disable the Job
   $_.DisableScheduler()
   # Wait for the job to actually stop
   while (!$_.IsStopped()) {}
   $ScheduleOptions = $_.ScheduleOptions
   $ScheduleOptions.OptionsContinuous.Schedule = $AllowedtoRun
   Set-VBRJobScheduleOptions -Job $_ -Options $ScheduleOptions
   $_.EnableScheduler()
}
tsightler
Veeam Software
 
Posts: 4769
Liked: 1738 times
Joined: Fri Jun 05, 2009 12:57 pm
Full Name: Tom Sightler

Re: Backup Copy Job Schedule

Veeam Logoby tsightler » Sun Oct 27, 2013 9:22 pm

OK, I got it, there's a parameter called "BackupCopyJobCanRunAnyTime" that controls the GUI options (wow it took some digging to find that). This is a simple string value set to either "True" or "False" and when set properly will change the GUI to show the proper option, so here's modified code that will properly set the window as well as the GUI to reflect the selected options.

Code: Select all
# Create Allowed Schedule Property
$AllowedtoRun = "<scheduler><Sunday>1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0</Sunday><Monday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Monday><Tuesday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Tuesday><Wednesday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Wednesday><Thursday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Thursday><Friday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Friday><Saturday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Saturday></scheduler>"


Get-VBRJob -Name "OFFSITE-DAILY*" | foreach {
   Write-Host $_.Name
   # Disable the Job
   $_.DisableScheduler()
   # Wait for the job to actually stop
   while (!$_.IsStopped()) {}
   $Options = $_.Options
   $Options.Options.RootNode.BackupCopyJobCanRunAnyTime = "False"
   $ScheduleOptions = $_.ScheduleOptions
   $ScheduleOptions.OptionsContinuous.Schedule = $AllowedtoRun
   Set-VBRJobScheduleOptions -Job $_ -Options $ScheduleOptions
   $_.SetOptions($Options)
   $_.EnableScheduler()
}
tsightler
Veeam Software
 
Posts: 4769
Liked: 1738 times
Joined: Fri Jun 05, 2009 12:57 pm
Full Name: Tom Sightler

Re: Backup Copy Job Schedule

Veeam Logoby sidavid » Mon Oct 28, 2013 12:53 am

Hi

Everything is working except the line $Options.Options.RootNode.BackupCopyJobCanRunAnyTime = "False"

When I run the script, I have the following error:

Code: Select all
Property 'BackupCopyJobCanRunAnyTime' cannot be found on this object; make sure
 it exists and is settable.
At C:\Veeam-Scripts\Extra-Scripts\veeam\dd.ps1:9 char:27
+ $Options.Options.RootNode. <<<< BackupCopyJobCanRunAnyTime = "False"
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyAssignmentException

Many thnaks
sidavid
Enthusiast
 
Posts: 60
Liked: never
Joined: Sun Jan 01, 2006 1:01 am

Re: Backup Copy Job Schedule

Veeam Logoby tsightler » Mon Oct 28, 2013 1:49 am

Sorry, I think that was a mistake on my part as the value of BackupCopyJobCanRunAnyTime and be set with a boolean in JobOptions which is probably the more correct way. Try this code at let me know if it works, it works fine in my test lab:

Code: Select all
# Create Allowed Schedule Property
$AllowedtoRun = "<scheduler><Sunday>1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0</Sunday><Monday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Monday><Tuesday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Tuesday><Wednesday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Wednesday><Thursday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Thursday><Friday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Friday><Saturday>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1</Saturday></scheduler>"


Get-VBRJob -Name "OFFSITE-DAILY*" | foreach {
   Write-Host $_.Name
   # Disable the Job
   $_.DisableScheduler()
   # Wait for the job to actually stop
   while (!$_.IsStopped()) {}
   $Options = $_.Options
   $Options.JobOptions.BackupCopyJobCanRunAnyTime = $false
   $_.SetOptions($Options)
   $ScheduleOptions = $_.ScheduleOptions
   $ScheduleOptions.OptionsContinuous.Schedule = $AllowedtoRun
   Set-VBRJobScheduleOptions -Job $_ -Options $ScheduleOptions
   $_.EnableScheduler()
}


If for some reason it doesn't work can you verify that you are running V7 Patch 1?
tsightler
Veeam Software
 
Posts: 4769
Liked: 1738 times
Joined: Fri Jun 05, 2009 12:57 pm
Full Name: Tom Sightler


Return to PowerShell



Who is online

Users browsing this forum: No registered users and 7 guests