Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This script helps you to create new backup policy or modify the current system state backup policy set for the server protected by MARS agent.
<#
.SYNOPSIS
Modify system state policy
.DESCRIPTION
Modify system state policy
.ROLE
Administrators
#>
param (
[Parameter(Mandatory = $true)]
[string[]]
$daysOfWeek,
[Parameter(Mandatory = $true)]
[string[]]
$timesOfDay,
[Parameter(Mandatory = $true)]
[int]
$weeklyFrequency,
[Parameter(Mandatory = $false)]
[int]
$retentionDays,
[Parameter(Mandatory = $false)]
[Boolean]
$retentionWeeklyPolicy,
[Parameter(Mandatory = $false)]
[int]
$retentionWeeks,
[Parameter(Mandatory = $false)]
[Boolean]
$retentionMonthlyPolicy,
[Parameter(Mandatory = $false)]
[int]
$retentionMonths
)
Set-StrictMode -Version 5.0
$env:PSModulePath = (Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PSModulePath).PSModulePath
Import-Module MSOnlineBackup
$ErrorActionPreference = "Stop"
Try {
$oldPolicy = Get-OBSystemStatePolicy
if ($oldPolicy) {
return
}
$policy = New-OBPolicy
$policy = Add-OBSystemState -Policy $policy
$timesOfDaySchedule = @()
foreach ($time in $timesOfDay) {
$timesOfDaySchedule += ([TimeSpan]$time)
}
$daysOfWeekSchedule = @()
foreach ($day in $daysOfWeek) {
$daysOfWeekSchedule += ([System.DayOfWeek]$day)
}
$schedule = New-OBSchedule -DaysOfWeek $daysOfWeekSchedule -TimesOfDay $timesOfDaySchedule -WeeklyFrequency $weeklyFrequency
if ($daysOfWeekSchedule.Count -eq 7) {
if ($retentionWeeklyPolicy -and $retentionMonthlyPolicy) {
$retention = New-OBRetentionPolicy -RetentionDays $retentionDays -RetentionWeeklyPolicy:$true -WeekDaysOfWeek $daysOfWeekSchedule -WeekTimesOfDay $timesOfDaySchedule -RetentionWeeks $retentionWeeks -RetentionMonthlyPolicy:$true -MonthDaysOfWeek $daysOfWeekSchedule -MonthTimesOfDay $timesOfDaySchedule -RetentionMonths $retentionMonths
}
elseif ($retentionWeeklyPolicy) {
$retention = New-OBRetentionPolicy -RetentionDays $retentionDays -RetentionWeeklyPolicy:$true -WeekDaysOfWeek $daysOfWeekSchedule -WeekTimesOfDay $timesOfDaySchedule -RetentionWeeks $retentionWeeks
}
elseif ($retentionMonthlyPolicy) {
$retention = New-OBRetentionPolicy -RetentionDays $retentionDays -RetentionMonthlyPolicy:$true -MonthDaysOfWeek $daysOfWeekSchedule -MonthTimesOfDay $timesOfDaySchedule -RetentionMonths $retentionMonths
}
else {
$retention = New-OBRetentionPolicy -RetentionDays $retentionDays
}
}
else {
if ($retentionWeeklyPolicy -and $retentionMonthlyPolicy) {
$retention = New-OBRetentionPolicy -RetentionWeeklyPolicy:$true -WeekDaysOfWeek $daysOfWeekSchedule -WeekTimesOfDay $timesOfDaySchedule -RetentionWeeks $retentionWeeks -RetentionMonthlyPolicy:$true -MonthDaysOfWeek $daysOfWeekSchedule -MonthTimesOfDay $timesOfDaySchedule -RetentionMonths $retentionMonths
}
elseif ($retentionWeeklyPolicy) {
$retention = New-OBRetentionPolicy -RetentionWeeklyPolicy:$true -WeekDaysOfWeek $daysOfWeekSchedule -WeekTimesOfDay $timesOfDaySchedule -RetentionWeeks $retentionWeeks
}
elseif ($retentionMonthlyPolicy) {
$retention = New-OBRetentionPolicy -RetentionMonthlyPolicy:$true -MonthDaysOfWeek $daysOfWeekSchedule -MonthTimesOfDay $timesOfDaySchedule -RetentionMonths $retentionMonths
}
}
Set-OBSchedule -Policy $policy -Schedule $schedule
Set-OBRetentionPolicy -Policy $policy -RetentionPolicy $retention
Set-OBSystemStatePolicy -Policy $policy -Confirm:$false
}
Catch {
if ($error[0].ErrorDetails) {
throw $error[0].ErrorDetails
}
throw $error[0]
}
To execute the script, follow these steps:
- Save the above script on your machine with a name of your choice and .ps1 extension.
- Execute the script by providing the following parameters:
Schedule of backup and number of days/weeks/months or years that the backup needs to be retained.
Use PowerShell to deploy and manage on-premises backups using MARS agent.