システム状態のバックアップ ポリシーを新しく作成するか、現在のものを変更するための PowerShell スクリプト
このスクリプトは、新しいバックアップ ポリシーを作成したり、MARS エージェントによって保護されているサーバーに現在設定されているシステム状態のバックアップ ポリシーを変更したりするのに役立ちます。
サンプル スクリプト
<#
.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]
}
スクリプトを実行する方法
- 上記のスクリプトを、任意の名前と .ps1 拡張子で、お使いのコンピューターに保存します。
- 次のパラメーターを指定して、スクリプトを実行します。
バックアップのスケジュールと、バックアップを保持する必要がある日数、週数、月数、または年数を指定します。
次のステップ
PowerShell を使用して、MARS エージェントを使用してオンプレミスのバックアップをデプロイおよび管理する方法について説明します。