public/cbb/Get-MBSBackupPlan.ps1
function Get-MBSBackupPlan { <# .SYNOPSIS Get backup plans from MBS backup agent. .EXAMPLE PS C:\> Get-MBSBackupPlan -StorageType All -PlanType All Lists all backup plans .EXAMPLE PS C:\> Get-MBSBackupPlan -StorageType Local -PlanType All Lists only backup plans with a local destination. .EXAMPLE PS C:\> Get-MBSBackupPlan -StorageType Cloud -PlanType All Lists only backup plans with a cloud destination. .EXAMPLE PS C:\> Get-MBSBackupPlan -StorageType All -PlanType File-Level Lists all File-level backup plans. .EXAMPLE PS C:\> Get-MBSBackupPlan -StorageType All -PlanType Image-Based Lists all Image-Based backup plans. .EXAMPLE PS C:\> Get-MBSBackupPlan -StorageType Local -PlanType Image-Based Lists Image-Based backup plans with a local destination. .EXAMPLE PS C:\> Get-MBSBackupPlan -StorageType All -PlanType All -OutputType Full Get extended parameters of all backup plans. .INPUTS None .OUTPUTS System.Management.Automation.PSCustomObject .NOTES Author: Alex Volkov .LINK https://kb.msp360.com/managed-backup-service/powershell-module/cmdlets/get-mbsbackupplan #> [CmdletBinding()] param ( # [Parameter(Mandatory=$false, HelpMessage="Backup destination storage type.")] [ValidateSet("All", "Local", "Cloud", "Hybrid")] [string] $StorageType = "All", # [Parameter(Mandatory=$false, HelpMessage="Backup plan type.")] [ValidateSet("All", "File-Level", "Image-Based", "MSSQL","MSExchange","VMware","Hyper-V")] [string] $PlanType = "All", # [Parameter(Mandatory=$false, HelpMessage="Backup plan type.")] [ValidateSet("Short", "Full", "Raw")] [string] $OutputType = "Short" ) begin { if (-not($CBB = Get-MBSAgent)) { Break } } process { function Compare-StorageTypes { param ( $Account, [string]$StorageType ) $result = $false switch -exact ($StorageType) { "All" {$result = $true} "Cloud" { if($Account.SGCloudTypeValue -ne "FileSystemConnection" -and $Account.SGCloudTypeValue -ne "PhysicalFile" -and $BackupPlan.BasePlan.HybridID -eq "00000000-0000-0000-0000-000000000000"){ $result = $true }else { $result = $false } } "Local" { if($Account.Type -eq "FileSystemConnection" -or $Account.SGCloudTypeValue -eq "PhysicalFile"){ $result = $true }else { $result = $false } } "Hybrid" { if ($BackupPlan.BasePlan.HybridID -ne "00000000-0000-0000-0000-000000000000") { $result = $true }else { $result = $false } } Default {} } return $result } Write-Verbose -Message "$($PSCmdlet.MyInvocation.MyCommand.Name): Arguments: -StorageType $StorageType -PlanType $PlanType" $BackupPlansArray = @() foreach ($_ in (Get-ChildItem ("$($CBB.CBBProgramData)\*.cbb") -ErrorAction SilentlyContinue)){ if (Get-Content $_.FullName){ $BackupPlan = [xml](Get-Content ($_.FullName)) switch ($PlanType) { "All" { if ($BackupPlan.BasePlan.type -notlike "*Restore*" -and $BackupPlan.BasePlan.type -ne "ConsistencyCheckPlan"){ if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){ $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan } } } "File-Level" { if ($BackupPlan.BasePlan.type -eq "Plan"){ if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){ if ($BackupPlan.BasePlan.IsArchive -eq "true") { $BackupPlanNBFConverted = Convert-XMLtoPSObject $BackupPlan.BasePlan $BackupPlansArray += New-Object -TypeName MBS.Agent.Plan.NBFFileLevelBackupPlan -Property @{ Name = $BackupPlanNBFConverted.Name ID = $BackupPlanNBFConverted.ID StorageAccount = Get-MBSStorageAccount -ID $BackupPlanNBFConverted.ConnectionID BackupPlanCommonOption = New-Object -TypeName MBS.Agent.Plan.NBFBackupPlanCommonOption -Property @{ SyncRepositoryBeforeRun = $BackupPlanNBFConverted.SyncBeforeRun UseServerSideEncryption = $BackupPlanNBFConverted.UseServerSideEncryption EncryptionAlgorithm = ($BackupPlanNBFConverted.EncryptionAlgorithm+$BackupPlanNBFConverted.EncryptionKeySize) EncryptionPassword = $(if($BackupPlanNBFConverted.UseEncryption){ConvertTo-SecureString -string "!<encrypted_string>!" -AsPlainText -Force}else{$null}) UseCompression = $BackupPlanNBFConverted.UseCompression StorageClass = $BackupPlanNBFConverted.StorageClass FullConsistencyCheck = $BackupPlanNBFConverted.UseFullConsistencyCheck StopIfPlanRunsFor = $(if($BackupPlanNBFConverted.Schedule.StopAfterTicks -eq "9223372036854775807"){[timespan]"00:00:00"}else{[timespan]$BackupPlanNBFConverted.Schedule.StopAfterTicks}) RunMissedPlanImmediately = $BackupPlanNBFConverted.ForceMissedSchedule PreActionCommand = $(if($BackupPlanNBFConverted.Actions.Pre.Enabled){$BackupPlanNBFConverted.Actions.Pre.CommandLine + " " + $BackupPlanNBFConverted.Actions.Pre.Arguments}) PreActionContinueAnyway = $(if($BackupPlanNBFConverted.Actions.Pre.Enabled){-not $BackupPlanNBFConverted.Actions.Pre.TerminateOnFailure}) PostActionCommand = $(if($BackupPlanNBFConverted.Actions.Post.Enabled){$BackupPlanNBFConverted.Actions.Post.CommandLine + " " + $BackupPlanNBFConverted.Actions.Post.Arguments}) PostActionRunAnyway = $(if($BackupPlanNBFConverted.Actions.Post.Enabled){$BackupPlanNBFConverted.Actions.Post.RunOnBackupFailure}) ResultEmailNotification = $(if($BackupPlanNBFConverted.Notification.SendNotification -and $BackupPlanNBFConverted.Notification.OnlyOnFailure){ [MBS.Agent.Plan.Notification]"errorOnly" }elseif ($BackupPlanNBFConverted.Notification.SendNotification -and -not $BackupPlanNBFConverted.Notification.OnlyOnFailure) { [MBS.Agent.Plan.Notification]"on" }elseif (-not $BackupPlanNBFConverted.Notification.SendNotification) { [MBS.Agent.Plan.Notification]"off" }) AddEventToWindowsLog = $(if($BackupPlanNBFConverted.WindowsEventLogNotification.SendNotification -and $BackupPlanNBFConverted.WindowsEventLogNotification.OnlyOnFailure){ [MBS.Agent.Plan.Notification]"errorOnly" }elseif ($BackupPlanNBFConverted.WindowsEventLogNotification.SendNotification -and -not $BackupPlanNBFConverted.WindowsEventLogNotification.OnlyOnFailure) { [MBS.Agent.Plan.Notification]"on" }elseif (-not $BackupPlanNBFConverted.WindowsEventLogNotification.SendNotification) { [MBS.Agent.Plan.Notification]"off" }) KeepVersionPeriod = $(if($BackupPlanNBFConverted.SerializationSupportRetentionTime -eq "10675199.02:48:05.4775807") { $null }else{ [timespan]$BackupPlanNBFConverted.SerializationSupportRetentionTime }) GFSKeepWeekly = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Weekly.IsEnabled){ $BackupPlanNBFConverted.GFSPolicySettings.Weekly.StorePeriod }else { $null }) GFSKeepMonthly = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Monthly.IsEnabled){ $BackupPlanNBFConverted.GFSPolicySettings.Monthly.StorePeriod }else { $null }) GFSKeepYearly = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Yearly.IsEnabled){ $BackupPlanNBFConverted.GFSPolicySettings.Yearly.StorePeriod }else { $null }) GFSMonthOfTheYear = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Yearly.IsEnabled){ $BackupPlanNBFConverted.GFSPolicySettings.Yearly.TakeBackupFromMonth }else { 0 }) } Schedule = $(if($BackupPlanNBFConverted.Schedule.Enabled){ New-Object -TypeName MBS.Agent.Plan.NBFIncrementalSchedule -Property @{ Frequency = $(if (-not (Compare-Object -ReferenceObject $BackupPlanNBFConverted.Schedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) { "Daily" }else { $BackupPlanNBFConverted.Schedule.RecurType }) At = $(if (-not $BackupPlanNBFConverted.Schedule.DailyRecurrence) { [datetime]"$($BackupPlanNBFConverted.Schedule.Hour):$($BackupPlanNBFConverted.Schedule.Minutes)" }else{ [datetime]"1/1/0001 0:00:00" }) DayOfMonth = $(if ($BackupPlanNBFConverted.Schedule.RecurType -eq "Monthly") { $BackupPlanNBFConverted.Schedule.DayOfMonth }else{ $null }) DayOfWeek = $(if ($BackupPlanNBFConverted.Schedule.RecurType -eq "Weekly" -and (Compare-Object -ReferenceObject $BackupPlanNBFConverted.Schedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) { $BackupPlanNBFConverted.Schedule.WeekDays.DayOfWeek }else { $null }) WeekNumber = $(if ($BackupPlanNBFConverted.Schedule.RecurType -eq "Monthly") { $BackupPlanNBFConverted.Schedule.WeekNumber }else { $null }) OccursFrom = $(if ($BackupPlanNBFConverted.Schedule.DailyRecurrence) { [timespan]"$($BackupPlanNBFConverted.Schedule.DailyFromHour):$($BackupPlanNBFConverted.Schedule.DailyFromMinutes)" }else{ [timespan]"00:00:00" }) OccursTo = $(if ($BackupPlanNBFConverted.Schedule.DailyRecurrence) { [timespan]"$($BackupPlanNBFConverted.Schedule.DailyTillHour):$($BackupPlanNBFConverted.Schedule.DailyTillMinutes)" }else{ [timespan]"00:00:00" }) OccursEvery = $(if ($BackupPlanNBFConverted.Schedule.DailyRecurrence) { New-TimeSpan -Minutes $BackupPlanNBFConverted.Schedule.DailyRecurrencePeriod }else{ [timespan]"00:00:00" }) } }else { $null }) ForceFullSchedule = $(if($BackupPlanNBFConverted.ForceFullSchedule.Enabled){ New-Object -TypeName MBS.Agent.Plan.NBFFullSchedule -Property @{ Frequency = $(if (-not (Compare-Object -ReferenceObject $BackupPlanNBFConverted.ForceFullSchedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) { "Daily" }else { $BackupPlanNBFConverted.ForceFullSchedule.RecurType }) DayOfMonth = $(if ($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Monthly") { $BackupPlanNBFConverted.ForceFullSchedule.DayOfMonth }else{ $null }) DayOfWeek = $(if ($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Weekly" -and (Compare-Object -ReferenceObject $BackupPlanNBFConverted.ForceFullSchedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) { $BackupPlanNBFConverted.ForceFullSchedule.WeekDays.DayOfWeek }elseif($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Monthly") { $BackupPlanNBFConverted.ForceFullSchedule.DayOfWeek }else{ $null }) WeekNumber = $(if ($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Monthly") { $BackupPlanNBFConverted.ForceFullSchedule.WeekNumber }else { $null }) } }else { $null }) BackupNTFSPermissions = $BackupPlanNBFConverted.BackupNTFSPermissions FastNTFSScan = $BackupPlanNBFConverted.UseFastNtfsScan ForceUsingVSS = $BackupPlanNBFConverted.AlwaysUseVSS UseShareReadWriteModeOnError = $BackupPlanNBFConverted.UseShareReadWriteModeOnError BackupEmptyFolders = $BackupPlanNBFConverted.BackupEmptyFolders BackupOnlyAfter = [datetime]$BackupPlanNBFConverted.BackupOnlyAfterUTC ExcludeSystemHiddenFiles = -not $BackupPlanNBFConverted.BackupFilter.IncludeSystemAndHidden SkipFolder = $BackupPlanNBFConverted.ExcludeFodlerList.string IncludeFilesMask = $(if ($BackupPlanNBFConverted.BackupFilter.FilterType -eq "UseIncludeMask") { $BackupPlanNBFConverted.BackupFilter.Filters.string }else { $null }) ExcludeFilesMask = $(if ($BackupPlanNBFConverted.BackupFilter.FilterType -eq "UseExcludeMask") { $BackupPlanNBFConverted.BackupFilter.Filters.string }else { $null }) IgnoreErrorPathNotFound = $BackupPlanNBFConverted.UseIgnoreErrorsOnPathNotFound BackupItem = $BackupPlanNBFConverted.Items.PlanItem.Path ExcludeItem = $BackupPlanNBFConverted.ExcludedItems.PlanItem.Path #| ForEach-Object -Begin {$BackupFileArray = @()} -Process { # if(([IO.FileInfo]$_).Extension -ne ""){ # $BackupFileArray += $_ # } #} -End {if($BackupFileArray){$BackupFileArray}else{$null}}) #BackupDirectory = $($BackupPlanNBFConverted.Items.PlanItem.Path | ForEach-Object -Begin {$BackupDirectoryArray = @()} -Process { # if(([IO.FileInfo]$_).Extension -eq ""){ # $BackupDirectoryArray += $_ # } #} -End {if($BackupDirectoryArray){$BackupDirectoryArray}else{$null}}) GenerateDetailedReport = $BackupPlanNBFConverted.Notification.GenerateReport } }else{ $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan } } } } "Image-Based" { if ($BackupPlan.BasePlan.type -eq "BackupDiskImagePlan") { if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){ if ($BackupPlan.BasePlan.IsArchive -eq "true") { $BackupPlanNBFConverted = Convert-XMLtoPSObject $BackupPlan.BasePlan $BackupPlansArray += New-Object -TypeName MBS.Agent.Plan.NBFImageBasedBackupPlan -Property @{ Name = $BackupPlanNBFConverted.Name ID = $BackupPlanNBFConverted.ID StorageAccount = Get-MBSStorageAccount -ID $BackupPlanNBFConverted.ConnectionID BackupPlanCommonOption = New-Object -TypeName MBS.Agent.Plan.NBFBackupPlanCommonOption -Property @{ SyncRepositoryBeforeRun = $BackupPlanNBFConverted.SyncBeforeRun UseServerSideEncryption = $BackupPlanNBFConverted.UseServerSideEncryption EncryptionAlgorithm = ($BackupPlanNBFConverted.EncryptionAlgorithm+$BackupPlanNBFConverted.EncryptionKeySize) EncryptionPassword = $(if($BackupPlanNBFConverted.UseEncryption){ConvertTo-SecureString -string "!<encrypted_string>!" -AsPlainText -Force}else{$null}) UseCompression = $BackupPlanNBFConverted.UseCompression StorageClass = $BackupPlanNBFConverted.StorageClass FullConsistencyCheck = $BackupPlanNBFConverted.UseFullConsistencyCheck StopIfPlanRunsFor = $(if($BackupPlanNBFConverted.Schedule.StopAfterTicks -eq "9223372036854775807"){[timespan]"00:00:00"}else{[timespan]$BackupPlanNBFConverted.Schedule.StopAfterTicks}) RunMissedPlanImmediately = $BackupPlanNBFConverted.ForceMissedSchedule PreActionCommand = $(if($BackupPlanNBFConverted.Actions.Pre.Enabled){$BackupPlanNBFConverted.Actions.Pre.CommandLine + " " + $BackupPlanNBFConverted.Actions.Pre.Arguments}) PreActionContinueAnyway = $(if($BackupPlanNBFConverted.Actions.Pre.Enabled){-not $BackupPlanNBFConverted.Actions.Pre.TerminateOnFailure}) PostActionCommand = $(if($BackupPlanNBFConverted.Actions.Post.Enabled){$BackupPlanNBFConverted.Actions.Post.CommandLine + " " + $BackupPlanNBFConverted.Actions.Post.Arguments}) PostActionRunAnyway = $(if($BackupPlanNBFConverted.Actions.Post.Enabled){$BackupPlanNBFConverted.Actions.Post.RunOnBackupFailure}) ResultEmailNotification = $(if($BackupPlanNBFConverted.Notification.SendNotification -and $BackupPlanNBFConverted.Notification.OnlyOnFailure){ [MBS.Agent.Plan.Notification]"errorOnly" }elseif ($BackupPlanNBFConverted.Notification.SendNotification -and -not $BackupPlanNBFConverted.Notification.OnlyOnFailure) { [MBS.Agent.Plan.Notification]"on" }elseif (-not $BackupPlanNBFConverted.Notification.SendNotification) { [MBS.Agent.Plan.Notification]"off" }) AddEventToWindowsLog = $(if($BackupPlanNBFConverted.WindowsEventLogNotification.SendNotification -and $BackupPlanNBFConverted.WindowsEventLogNotification.OnlyOnFailure){ [MBS.Agent.Plan.Notification]"errorOnly" }elseif ($BackupPlanNBFConverted.WindowsEventLogNotification.SendNotification -and -not $BackupPlanNBFConverted.WindowsEventLogNotification.OnlyOnFailure) { [MBS.Agent.Plan.Notification]"on" }elseif (-not $BackupPlanNBFConverted.WindowsEventLogNotification.SendNotification) { [MBS.Agent.Plan.Notification]"off" }) KeepVersionPeriod = $(if($BackupPlanNBFConverted.SerializationSupportRetentionTime -eq "10675199.02:48:05.4775807") { $null }else{ [timespan]$BackupPlanNBFConverted.SerializationSupportRetentionTime }) GFSKeepWeekly = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Weekly.IsEnabled){ $BackupPlanNBFConverted.GFSPolicySettings.Weekly.StorePeriod }else { $null }) GFSKeepMonthly = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Monthly.IsEnabled){ $BackupPlanNBFConverted.GFSPolicySettings.Monthly.StorePeriod }else { $null }) GFSKeepYearly = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Yearly.IsEnabled){ $BackupPlanNBFConverted.GFSPolicySettings.Yearly.StorePeriod }else { $null }) GFSMonthOfTheYear = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Yearly.IsEnabled){ $BackupPlanNBFConverted.GFSPolicySettings.Yearly.TakeBackupFromMonth }else { 0 }) } Schedule = $(if($BackupPlanNBFConverted.Schedule.Enabled){ New-Object -TypeName MBS.Agent.Plan.NBFIncrementalSchedule -Property @{ Frequency = $(if (-not (Compare-Object -ReferenceObject $BackupPlanNBFConverted.Schedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) { "Daily" }else { $BackupPlanNBFConverted.Schedule.RecurType }) At = $(if (-not $BackupPlanNBFConverted.Schedule.DailyRecurrence) { [datetime]"$($BackupPlanNBFConverted.Schedule.Hour):$($BackupPlanNBFConverted.Schedule.Minutes)" }else{ [datetime]"1/1/0001 0:00:00" }) DayOfMonth = $(if ($BackupPlanNBFConverted.Schedule.RecurType -eq "Monthly") { $BackupPlanNBFConverted.Schedule.DayOfMonth }else{ $null }) DayOfWeek = $(if ($BackupPlanNBFConverted.Schedule.RecurType -eq "Weekly" -and (Compare-Object -ReferenceObject $BackupPlanNBFConverted.Schedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) { $BackupPlanNBFConverted.Schedule.WeekDays.DayOfWeek }else { $null }) WeekNumber = $(if ($BackupPlanNBFConverted.Schedule.RecurType -eq "Monthly") { $BackupPlanNBFConverted.Schedule.WeekNumber }else { $null }) OccursFrom = $(if ($BackupPlanNBFConverted.Schedule.DailyRecurrence) { [timespan]"$($BackupPlanNBFConverted.Schedule.DailyFromHour):$($BackupPlanNBFConverted.Schedule.DailyFromMinutes)" }else{ [timespan]"00:00:00" }) OccursTo = $(if ($BackupPlanNBFConverted.Schedule.DailyRecurrence) { [timespan]"$($BackupPlanNBFConverted.Schedule.DailyTillHour):$($BackupPlanNBFConverted.Schedule.DailyTillMinutes)" }else{ [timespan]"00:00:00" }) OccursEvery = $(if ($BackupPlanNBFConverted.Schedule.DailyRecurrence) { New-TimeSpan -Minutes $BackupPlanNBFConverted.Schedule.DailyRecurrencePeriod }else{ [timespan]"00:00:00" }) } }else { $null }) ForceFullSchedule = $(if($BackupPlanNBFConverted.ForceFullSchedule.Enabled){ New-Object -TypeName MBS.Agent.Plan.NBFFullSchedule -Property @{ Frequency = $(if (-not (Compare-Object -ReferenceObject $BackupPlanNBFConverted.ForceFullSchedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) { "Daily" }else { $BackupPlanNBFConverted.ForceFullSchedule.RecurType }) DayOfMonth = $(if ($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Monthly") { $BackupPlanNBFConverted.ForceFullSchedule.DayOfMonth }else{ $null }) DayOfWeek = $(if ($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Weekly" -and (Compare-Object -ReferenceObject $BackupPlanNBFConverted.ForceFullSchedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) { $BackupPlanNBFConverted.ForceFullSchedule.WeekDays.DayOfWeek }elseif($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Monthly") { $BackupPlanNBFConverted.ForceFullSchedule.DayOfWeek }else{ $null }) WeekNumber = $(if ($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Monthly") { $BackupPlanNBFConverted.ForceFullSchedule.WeekNumber }else { $null }) } }else { $null }) BackupVolumes = $(switch ($BackupPlanNBFConverted.BackupVolumes) { "AllDrives" {[MBS.Agent.Plan.BackupVolumeType]"AllVolumes"} "SystemRequired" { [MBS.Agent.Plan.BackupVolumeType]"SystemRequired" } "SelectedOnly" { [MBS.Agent.Plan.BackupVolumeType]"SelectedVolumes" } Default { } }) Volumes = $(if ($BackupPlanNBFConverted.BackupVolumes -eq "SelectedOnly") { $BackupPlanNBFConverted.DiskInfo.DiskInfoCommunication.Volumes.VolumeInfoCommunication | Where-Object Enabled -eq $true | ForEach-Object -Begin {$BackupVolumeArray = [System.Collections.Generic.List[MBS.Agent.IBBVolume]]::new()} -Process{ $BackupVolumeArray += New-Object -TypeName MBS.Agent.IBBVolume -Property @{ MountPoints = $_.MountPoints.string Supported = $_.Supported RequiredBySystem = $_.RequiredBySystem DriveType = $_.DriveType FileSystemType = $_.FileSystemType WindowsVolumeIdentity = $_.WindowsVolumeIdentity Length = $_.Length UsedSpace = $_.UsedSpace Label = $_.Label IsBoot = $_.IsBoot IsActive = $_.BiosIsActive } } -End {if($BackupVolumeArray){$BackupVolumeArray}else{}} }else { $null }) DisableVSS = $BackupPlanNBFConverted.DisableVSS IgnoreBadSectors = $BackupPlanNBFConverted.IgnoreBadSectors UseSystemVSS = $(if ($BackupPlanNBFConverted.VSSProviderID -eq "b5946137-7b9f-4925-af80-51abd60b20d5") { $true }else { $false }) PrefetchBlockCount = $BackupPlanNBFConverted.PrefetchBlockCount BlockSize = $BackupPlanNBFConverted.BlockSize / 1024 RestoreVerificationMode = $(switch ($BackupPlanNBFConverted.RunRestoreVerificationOn) { "None" { [MBS.Agent.Plan.RestoreVerificationMode]"DoNotRun" } "OnFull" { [MBS.Agent.Plan.RestoreVerificationMode]"RunForFull" } "OnDiff" { [MBS.Agent.Plan.RestoreVerificationMode]"RunForIncremental" } "OnAll" { [MBS.Agent.Plan.RestoreVerificationMode]"RunForFullAndIncremental" } Default {} }) } }else{ $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan } } } } "MSSQL" { if ($BackupPlan.BasePlan.type -eq "BackupDatabasePlan") { if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){ $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan } } } "MSExchange" { if ($BackupPlan.BasePlan.type -eq "BackupExchangePlan") { if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){ $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan } } } "VMware" { if ($BackupPlan.BasePlan.type -eq "BackupVirtualMachinesESXiPlan") { if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){ $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan } } } "Hyper-V" { if ($BackupPlan.BasePlan.type -eq "BackupVirtualMachinesHyperVPlan") { if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){ $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan } } } Default {Write-Error -message "Incorrect PlanType parameter"} } } } switch ($OutputType) { "Short" { $BackupPlansArray = $BackupPlansArray | Select-Object ID, Name, Type, Bucket, ConnectionID, UseEncryption, UseCompression, Items, ExcludedItems, DiskInfo, Schedule, ForceFullSchedule } "Full" { $BackupPlansArray = $BackupPlansArray | Select-Object -Property * -ExcludeProperty xsd, xsi, Tag } "Raw" { $BackupPlansArray = $BackupPlansArray | Select-Object * } Default {Write-Error -message "Incorrect OutputType parameter"} } return $BackupPlansArray } end{ } } # SIG # Begin signature block # MIIbtQYJKoZIhvcNAQcCoIIbpjCCG6ICAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBWhX5JvfJN39UV # 75Nwtri66QE4Z78fq/gQ5ydyxPP0iaCCC04wggVmMIIETqADAgECAhEA3VtfmfWb # K32tKkM2xJo7CjANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJHQjEbMBkGA1UE # CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQK # ExFDT01PRE8gQ0EgTGltaXRlZDEjMCEGA1UEAxMaQ09NT0RPIFJTQSBDb2RlIFNp # Z25pbmcgQ0EwHhcNMTcxMjE0MDAwMDAwWhcNMjExMjE0MjM1OTU5WjCBqDELMAkG # A1UEBhMCQ1kxDTALBgNVBBEMBDEwOTUxETAPBgNVBAgMCExlZmNvc2lhMRAwDgYD # VQQHDAdOaWNvc2lhMRUwEwYDVQQJDAxMYW1wb3VzYXMsIDExJjAkBgNVBAoMHVRy # aWNoaWxpYSBDb25zdWx0YW50cyBMaW1pdGVkMSYwJAYDVQQDDB1UcmljaGlsaWEg # Q29uc3VsdGFudHMgTGltaXRlZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC # ggEBAJC5Ak9MZHfMGygnL9B+2OcFRvnTeYAJPa4tJS/ES3eSBBge9BiBUa6f+QlX # lIjt+NBD9QrewScUj9EnaguKzc8NFonBJAgT43jD5rCuuj3GljTIHftLDF9vgetf # 7KUYhwMypqxRP8pLMAuXzIzw5Yxjh1Quy92dZyJYpOuGbz1PQVRMj2fhRqeerP4J # OiRktwnykjrxDsRNm+Iuas1BM+vjVA7B9Cj0Wf5NsMxSegJezvs0yqwHrsngEQrY # GXDKHstfsxd8KM5LxJdYN1neIAO8v6AuM6yjQT1z1ZwVSCHu2swNCA3T3M26fkk9 # 9TIZZI/LvfR++FJCUvJkPoPbOKUCAwEAAaOCAbMwggGvMB8GA1UdIwQYMBaAFCmR # YP+KTfrr+aZquM/55ku9Sc4SMB0GA1UdDgQWBBRqlxdnVxjIxF6fnOYUd7LOYeNe # rjAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEF # BQcDAzARBglghkgBhvhCAQEEBAMCBBAwRgYDVR0gBD8wPTA7BgwrBgEEAbIxAQIB # AwIwKzApBggrBgEFBQcCARYdaHR0cHM6Ly9zZWN1cmUuY29tb2RvLm5ldC9DUFMw # QwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQ09NT0RP # UlNBQ29kZVNpZ25pbmdDQS5jcmwwdAYIKwYBBQUHAQEEaDBmMD4GCCsGAQUFBzAC # hjJodHRwOi8vY3J0LmNvbW9kb2NhLmNvbS9DT01PRE9SU0FDb2RlU2lnbmluZ0NB # LmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMCQGA1Ud # EQQdMBuBGWNvbnRhY3RAY2xvdWRiZXJyeWxhYi5jb20wDQYJKoZIhvcNAQELBQAD # ggEBAEeInauUdqKYV4ncwGMqz5+frptASCXVnCMLI7j3JK0KCzmJkwHHmkIk3P0A # Rzedj5+1aFuXANtT42IACVf00tqq0IHO2KT2vHHJHNnx3ht6kMcCmKmUlnkZMjEK # +0WJD0JSP7lBRQBf5QJpDLmpbBTVvlbe/3nzpUZ95O5reaPekoQ1xC4Ossu06ba0 # djKhwk0HgeqZz7ZruWOVY/YRDfnlZ3it5+4Ck2JTXIVcUcXzT/ZdwNTkUiIqmh4T # HwOj+k/Yej7Q13ILWTNZMELs3Iec6FSSGXUijHV65pPI0dUXnq8pWYMfutgwlBaL # 78yXl4ihf46TXsnAMottH+ld8lAwggXgMIIDyKADAgECAhAufIfMDpNKUv6U/Ry3 # zTSvMA0GCSqGSIb3DQEBDAUAMIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl # YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P # RE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9u # IEF1dGhvcml0eTAeFw0xMzA1MDkwMDAwMDBaFw0yODA1MDgyMzU5NTlaMH0xCzAJ # BgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcT # B1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSMwIQYDVQQDExpD # T01PRE8gUlNBIENvZGUgU2lnbmluZyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP # ADCCAQoCggEBAKaYkGN3kTR/itHd6WcxEevMHv0xHbO5Ylc/k7xb458eJDIRJ2u8 # UZGnz56eJbNfgagYDx0eIDAO+2F7hgmz4/2iaJ0cLJ2/cuPkdaDlNSOOyYruGgxk # x9hCoXu1UgNLOrCOI0tLY+AilDd71XmQChQYUSzm/sES8Bw/YWEKjKLc9sMwqs0o # GHVIwXlaCM27jFWM99R2kDozRlBzmFz0hUprD4DdXta9/akvwCX1+XjXjV8QwkRV # PJA8MUbLcK4HqQrjr8EBb5AaI+JfONvGCF1Hs4NB8C4ANxS5Eqp5klLNhw972GIp # pH4wvRu1jHK0SPLj6CH5XkxieYsCBp9/1QsCAwEAAaOCAVEwggFNMB8GA1UdIwQY # MBaAFLuvfgI9+qbxPISOre44mOzZMjLUMB0GA1UdDgQWBBQpkWD/ik366/mmarjP # +eZLvUnOEjAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADATBgNV # HSUEDDAKBggrBgEFBQcDAzARBgNVHSAECjAIMAYGBFUdIAAwTAYDVR0fBEUwQzBB # oD+gPYY7aHR0cDovL2NybC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQ2VydGlmaWNh # dGlvbkF1dGhvcml0eS5jcmwwcQYIKwYBBQUHAQEEZTBjMDsGCCsGAQUFBzAChi9o # dHRwOi8vY3J0LmNvbW9kb2NhLmNvbS9DT01PRE9SU0FBZGRUcnVzdENBLmNydDAk # BggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEB # DAUAA4ICAQACPwI5w+74yjuJ3gxtTbHxTpJPr8I4LATMxWMRqwljr6ui1wI/zG8Z # wz3WGgiU/yXYqYinKxAa4JuxByIaURw61OHpCb/mJHSvHnsWMW4j71RRLVIC4nUI # BUzxt1HhUQDGh/Zs7hBEdldq8d9YayGqSdR8N069/7Z1VEAYNldnEc1PAuT+89r8 # dRfb7Lf3ZQkjSR9DV4PqfiB3YchN8rtlTaj3hUUHr3ppJ2WQKUCL33s6UTmMqB9w # ea1tQiCizwxsA4xMzXMHlOdajjoEuqKhfB/LYzoVp9QVG6dSRzKp9L9kR9GqH1NO # MjBzwm+3eIKdXP9Gu2siHYgL+BuqNKb8jPXdf2WMjDFXMdA27Eehz8uLqO8cGFjF # BnfKS5tRr0wISnqP4qNS4o6OzCbkstjlOMKo7caBnDVrqVhhSgqXtEtCtlWdvpnn # cG1Z+G0qDH8ZYF8MmohsMKxSCZAWG/8rndvQIMqJ6ih+Mo4Z33tIMx7XZfiuyfiD # FJN2fWTQjs6+NX3/cjFNn569HmwvqI8MBlD7jCezdsn05tfDNOKMhyGGYf6/VXTh # IXcDCmhsu+TJqebPWSXrfOxFDnlmaOgizbjvmIVNlhE8CYrQf7woKBP7aspUjZJc # zcJlmAaezkhb1LU3k0ZBfAfdz/pD77pnYf99SeC7MH1cgOPmFjlLpzGCD70wgg+5 # AgEBMIGSMH0xCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0 # ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVk # MSMwIQYDVQQDExpDT01PRE8gUlNBIENvZGUgU2lnbmluZyBDQQIRAN1bX5n1myt9 # rSpDNsSaOwowDQYJYIZIAWUDBAIBBQCgfDAQBgorBgEEAYI3AgEMMQIwADAZBgkq # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC # NwIBFTAvBgkqhkiG9w0BCQQxIgQgAS4p1rPaKDgTY/hiM/z4T7+hb1aLg3yZxFQg # fp4mgmEwDQYJKoZIhvcNAQEBBQAEggEAYFLKVIPFDKXy7eV6ZQy/BmhUAGUMkrnk # 1m/49Rn8/5kfG4X8O/RxT97JkbKSof20liFr5E/AW6NvoeYbe2Ghu3AYpNRFOv0h # 6RaSFPvLuWKMshTMJ09onWvP4wdOdsCBkQkwsbC6Nse0DPMOIoRtjvzBCkyQ8bGM # UoC/7lT9kOSCAWjbmjQSLTzwB3eH9mXxEFeQXsJ3mOTWSBo4t7GVC6JJwISViY1h # K3LdooqH9CLn/agE7nyiCrfMQ5W2a2ODsKIsXsQvBr5ABhqaRkc3EkliRgp2nFy8 # JilhaqSyT3uuu6/+yuBOr7LvCErdFny45df2kyDR4sfl16/aDEYHLqGCDX0wgg15 # BgorBgEEAYI3AwMBMYINaTCCDWUGCSqGSIb3DQEHAqCCDVYwgg1SAgEDMQ8wDQYJ # YIZIAWUDBAIBBQAwdwYLKoZIhvcNAQkQAQSgaARmMGQCAQEGCWCGSAGG/WwHATAx # MA0GCWCGSAFlAwQCAQUABCCZfWfbH//mYXqwH5XJF1oKHqroZFRUk7IGLBS2VOx4 # kgIQenNl+Ww5YJT/5uqonzNzIRgPMjAyMTA2MjUxOTE0NTRaoIIKNzCCBP4wggPm # oAMCAQICEA1CSuC+Ooj/YEAhzhQA8N0wDQYJKoZIhvcNAQELBQAwcjELMAkGA1UE # BhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2lj # ZXJ0LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQgU0hBMiBBc3N1cmVkIElEIFRpbWVz # dGFtcGluZyBDQTAeFw0yMTAxMDEwMDAwMDBaFw0zMTAxMDYwMDAwMDBaMEgxCzAJ # BgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjEgMB4GA1UEAxMXRGln # aUNlcnQgVGltZXN0YW1wIDIwMjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK # AoIBAQDC5mGEZ8WK9Q0IpEXKY2tR1zoRQr0KdXVNlLQMULUmEP4dyG+RawyW5xpc # SO9E5b+bYc0VkWJauP9nC5xj/TZqgfop+N0rcIXeAhjzeG28ffnHbQk9vmp2h+mK # vfiEXR52yeTGdnY6U9HR01o2j8aj4S8bOrdh1nPsTm0zinxdRS1LsVDmQTo3Vobc # kyON91Al6GTm3dOPL1e1hyDrDo4s1SPa9E14RuMDgzEpSlwMMYpKjIjF9zBa+RSv # FV9sQ0kJ/SYjU/aNY+gaq1uxHTDCm2mCtNv8VlS8H6GHq756WwogL0sJyZWnjbL6 # 1mOLTqVyHO6fegFz+BnW/g1JhL0BAgMBAAGjggG4MIIBtDAOBgNVHQ8BAf8EBAMC # B4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDBBBgNVHSAE # OjA4MDYGCWCGSAGG/WwHATApMCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LmRpZ2lj # ZXJ0LmNvbS9DUFMwHwYDVR0jBBgwFoAU9LbhIB3+Ka7S5GGlsqIlssgXNW4wHQYD # VR0OBBYEFDZEho6kurBmvrwoLR1ENt3janq8MHEGA1UdHwRqMGgwMqAwoC6GLGh0 # dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtdHMuY3JsMDKgMKAu # hixodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLXRzLmNybDCB # hQYIKwYBBQUHAQEEeTB3MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy # dC5jb20wTwYIKwYBBQUHMAKGQ2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9E # aWdpQ2VydFNIQTJBc3N1cmVkSURUaW1lc3RhbXBpbmdDQS5jcnQwDQYJKoZIhvcN # AQELBQADggEBAEgc3LXpmiO85xrnIA6OZ0b9QnJRdAojR6OrktIlxHBZvhSg5SeB # pU0UFRkHefDRBMOG2Tu9/kQCZk3taaQP9rhwz2Lo9VFKeHk2eie38+dSn5On7UOe # e+e03UEiifuHokYDTvz0/rdkd2NfI1Jpg4L6GlPtkMyNoRdzDfTzZTlwS/Oc1np7 # 2gy8PTLQG8v1Yfx1CAB2vIEO+MDhXM/EEXLnG2RJ2CKadRVC9S0yOIHa9GCiurRS # +1zgYSQlT7LfySmoc0NR2r1j1h9bm/cuG08THfdKDXF+l7f0P4TrweOjSaH6zqe/ # Vs+6WXZhiV9+p7SOZ3j5NpjhyyjaW4emii8wggUxMIIEGaADAgECAhAKoSXW1jIb # fkHkBdo2l8IVMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xNjAxMDcxMjAwMDBa # Fw0zMTAxMDcxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBpbmcgQ0EwggEiMA0GCSqGSIb3 # DQEBAQUAA4IBDwAwggEKAoIBAQC90DLuS82Pf92puoKZxTlUKFe2I0rEDgdFM1EQ # fdD5fU1ofue2oPSNs4jkl79jIZCYvxO8V9PD4X4I1moUADj3Lh477sym9jJZ/l9l # P+Cb6+NGRwYaVX4LJ37AovWg4N4iPw7/fpX786O6Ij4YrBHk8JkDbTuFfAnT7l3I # mgtU46gJcWvgzyIQD3XPcXJOCq3fQDpct1HhoXkUxk0kIzBdvOw8YGqsLwfM/fDq # R9mIUF79Zm5WYScpiYRR5oLnRlD9lCosp+R1PrqYD4R/nzEU1q3V8mTLex4F0IQZ # chfxFwbvPc3WTe8GQv2iUypPhR3EHTyvz9qsEPXdrKzpVv+TAgMBAAGjggHOMIIB # yjAdBgNVHQ4EFgQU9LbhIB3+Ka7S5GGlsqIlssgXNW4wHwYDVR0jBBgwFoAUReui # r/SSy4IxLVGLp6chnfNtyA8wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E # BAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwgweQYIKwYBBQUHAQEEbTBrMCQGCCsG # AQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUHMAKGN2h0 # dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RD # QS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNv # bS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6Ly9jcmwz # LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwUAYDVR0g # BEkwRzA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRp # Z2ljZXJ0LmNvbS9DUFMwCwYJYIZIAYb9bAcBMA0GCSqGSIb3DQEBCwUAA4IBAQBx # lRLpUYdWac3v3dp8qmN6s3jPBjdAhO9LhL/KzwMC/cWnww4gQiyvd/MrHwwhWiq3 # BTQdaq6Z+CeiZr8JqmDfdqQ6kw/4stHYfBli6F6CJR7Euhx7LCHi1lssFDVDBGiy # 23UC4HLHmNY8ZOUfSBAYX4k4YU1iRiSHY4yRUiyvKYnleB/WCxSlgNcSR3CzddWT # hZN+tpJn+1Nhiaj1a5bA9FhpDXzIAbG5KHW3mWOFIoxhynmUfln8jA/jb7UBJrZs # pe6HUSHkWGCbugwtK22ixH67xCUrRwIIfEmuE7bhfEJCKMYYVs9BNLZmXbZ0e/VW # MyIvIjayS6JKldj1po5SMYIChjCCAoICAQEwgYYwcjELMAkGA1UEBhMCVVMxFTAT # BgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEx # MC8GA1UEAxMoRGlnaUNlcnQgU0hBMiBBc3N1cmVkIElEIFRpbWVzdGFtcGluZyBD # QQIQDUJK4L46iP9gQCHOFADw3TANBglghkgBZQMEAgEFAKCB0TAaBgkqhkiG9w0B # CQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTIxMDYyNTE5MTQ1NFow # KwYLKoZIhvcNAQkQAgwxHDAaMBgwFgQU4deCqOGRvu9ryhaRtaq0lKYkm/MwLwYJ # KoZIhvcNAQkEMSIEIPCP1AbVppVJy/PX3M7XqT9pWL7EF7k336IH6HdtcF+BMDcG # CyqGSIb3DQEJEAIvMSgwJjAkMCIEILMQkAa8CtmDB5FXKeBEA0Fcg+MpK2FPJpZM # jTVx7PWpMA0GCSqGSIb3DQEBAQUABIIBAFrDnubZbkJHMp/HILW0ekLG/FBtYoiq # QD5q3hK0cf9rzpyflxjG7eVoI/BmYGODj9VIB9P+cB9N5x8V/YS3Gow2drgNUNNx # NdMTPCW/E5guo8yCi+/6/J87OcMdg0MOkUTfVcuYApTukCgbh58BELG1LeXQYk5F # /DePhQPp0SvYa3UL6q6emH1jSO8MLBWtYIM/Oumn0TrhKjO8IGfQd9Uzt0CP3vO3 # +ChgkbaeMjV0l247GOkJw/UOs+5G7r//Ky1DndXsQX2o6DPqe85zx/jRNSJol1SQ # DV9y1kksp3mWsUL0uqLvXyUTky8k2tjrT5VMxedygxCkUqUXYAI9Uu8= # SIG # End signature block |