none
DPMCreateConfig script on 2012 RRS feed

  • General discussion

  • I am in the process of upgrading from DPM 2012 Beta to the Full Release. Before removing the beta I ran the DPMSaveConfig script from this site. http://www.buchatech.com/2011/10/export-dpm-settings-to-xml-file/ It created the XML file without any issue, I think. But when attempting to run the DPMCreateConfig script it is erroring out when setting the $sched variable. Has anyone else had that problem and if so how did you resolve it? Thank you in advance. 

    PS C:\Program Files\Microsoft System Center 2012\DPM\DPM\bin> .\DPMcreateConfig.
    ps1 -configfile .\DPMsaveConfig.XML -allocationintent "auto"

    Security Warning
    Run only scripts that you trust. While scripts from the Internet can be useful,
     this script can potentially harm your computer. Do you want to run C:\Program
    Files\Microsoft System Center 2012\DPM\DPM\bin\DPMcreateConfig.ps1?
    [D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D"): r

    ==========================================
    DPMcreateConfig v0.94 usage
    ==========================================
    [-configfile <filespec>] specifies input file, defaults to .\DPMsaveConfig.XML

    [-AllocationIntent "Auto" | "Required" | "Used"], defaults to "Auto"

            Required = Allocate  minimum required size
            Used     = Allocate according used size
            Auto     = Allocate according DPM calculations

    [11:04:39] Configuration was saved by script version v0.94 and being parsed by v
    0.94
    [11:04:39] Processing saved information from DPMserver Backup01...
    [11:04:39] Inquiring data sources, this may take a while...
    [11:04:39]      No protection definitions for Backup01
    [11:04:39] Datasource queries done!
    [11:04:39] Creating group [Active Directory PG] ...
    [11:04:40] Modifying group [Active Directory PG] ...
    [11:04:41]      Auto consistency check is now ENABLED!
    [11:04:42] [Computer\System Protection] no longer exists on protected server
    [11:04:43]      Setting short term disk objectives for [DiskToDisk]
    [11:04:44]      Setting short term schedule [FullReplicationForApplication]
    [11:04:45] TRAP: DPMcreateConfig
    Cannot validate argument on parameter 'Schedule'. The argument is null. Supply a
    non-null argument and try the command again.

    At C:\Program Files\Microsoft System Center 2012\DPM\DPM\bin\DPMcreateConfig.ps1
    :450 char:55
    +                               Set-PolicySchedule -ProtectionGroup $mpg -Schedu
    le <<<<  $sched -DaysOfWeek $dow -TimesOfDay $tod -ErrorAction SilentlyContinue

    Monday, May 14, 2012 4:51 PM

All replies

  • Code for DPMCreateConfig

    #Author: Ruud Baars
    #Date 1/31/2010
    # Synopsis:
    # Reads and creates protection group & data source configuration in XML created using DPMsaveConfig.Ps1
    param ( 
    	[string[]]$dpmserverlist = @(),
    	$configfile = "",
    	[string]$AllocationIntent ="Auto"
    ) 
    
    #region traps 
    trap [Exception] { 
    	writelog $("TRAP: DPMcreateConfig")
    	$Error >> $logfile
    	$log = Get-EventLog -List | Where-Object { $_.Log -eq "Application" }
    	$log.Source = "DPMcreateConfig"
    	$log.WriteEntry("TRAP: DPMcreateConfig: $error", [system.Diagnostics.EventLogEntryType]::Error,9911) 
    	write-host $Error -f "magenta"
    	write-host $Error[0].InvocationInfo.PositionMessage -ForegroundColor "Magenta"
    	$Error.Clear()
    	exit 1
    }
    #endregion
    
    #region functions
    
    function writelog {
    	param([string]$msg, $color="Green")
    	$msg =  "[{0}] {1}" -f ((get-date).tostring($format)), $msg
    	$msg >> $logfile
    	Write-Host $msg -ForegroundColor $color
    }
    
    function Showhelp {
    	#just help page
    	Write-Host -f cyan @("
    ========================================== 
    DPMcreateConfig $version usage
    ==========================================
    [-configfile <filespec>] specifies input file, defaults to .\DPMsaveConfig.XML
    
    [-AllocationIntent `"Auto`" | `"Required`" | `"Used`"], defaults to `"Auto`"
    
    `tRequired = Allocate  minimum required size
    `tUsed`t = Allocate according used size
    `tAuto`t = Allocate according DPM calculations
    	") 
    }
    function LoadDPMsnapin {
    	#load PS snap-in if not already
    	param ()
    	if (Get-PSSnapin | ?{$_.name -like "Microsoft.DataProtectionManager.PowerShell"}) {
    	}
    	else {
    		Add-PSSnapin -name Microsoft.DataProtectionManager.PowerShell
    	}
    } 
    function DoDPM {
    	param ($dpmsrv )
    	$currentDPM = &hostname
    	writelog ("Processing saved information from DPMserver {0}..." -f $dpmsrv.Dpmservername)
    	disconnect-dpmserver $currentDPM
    	$srv = Connect-dpmserver $currentDPM
    	$DPMmajor = $srv.GetProductInformation().Version.Major
    
    	$PSs = @($srv.GetProductionServers())
    	writelog "Inquiring data sources, this may take a while..."
    	$xps = @()
    	$dpmsrv.Groups.SelectNodes("//DATASOURCES/*") | foreach {$xps += $_.ProductionServername}
    	$xps = $xps | sort -Unique
    
    	$DSs = @()
    	foreach ($ps in $PSs) {
    		if ($xps -match $ps.name) {
    			writelog ("`tQuerying server {0}" -f $ps.name)
    			$DSs += Get-DPMDatasource -ProductionServer $ps -Inquire
    		}
    		else {writelog ("`tNo protection definitions for {0}" -f $ps.name)}
    	}
    	Writelog "Datasource queries done!" 
    
    	$inactiveGrps = @()
    	foreach ($xgrp in $dpmsrv.groups.SelectNodes("*")) {
    		if ($xgrp.DATASOURCES.Count -gt 0 ) {DoPG $xgrp $DSs $srv }
    		else {
    			$inactiveGrps += $xgrp
    			writelog ("Skipping group [{0}] because no datasources were saved!" -f $xgrp.GroupName ) "Cyan"
    		}
    	}
    	writelog ("Processing DPMserver {0} finished`n`n" -f $dpmsrv.Name)
    }
    function RecurseForChild {
    	param($parent, $recursepath)
    	Write-host ("[{0}]`tRecursing: [" -f (Get-Date).tostring($format))  -ForegroundColor cyan -NoNewline
    	$pathsteps = $recursepath.split("\")[1..256] #split but omit first element
    	$level = $parent
    	Write-Host ("{0}" -f $parent.LogicalPath) -ForegroundColor cyan -NoNewline
    	foreach ($step in $pathsteps) {
    		$kidlevel = Get-DPMChildDatasource -ChildDatasource $level -Inquire | ? {$_.Name -eq $step}
    		Write-Host ("{0}\" -f $kidlevel.name) -ForegroundColor cyan -NoNewline
    		$level = $kidlevel
    	}
    	Write-Host "]" -ForegroundColor cyan
    	return $kidlevel
    }
    function DoChilds {
    	param ($DStodo, $protectedDS, $xds, $mpg, $DSs)
    	$parent=$DStodo.ds
    	$protectedChilds = @()
    	if ($protectedDS) {
    		$protectedChilds += Get-DPMChildDatasource -ChildDatasource $protectedDS -Inquire | ? {$_.CurrentProtectionState -eq "Protected" } 
    	}
    	writelog ("`tProcessing childs of [{0}] ..." -f $xds.logicalpath)
    	foreach ($xchild in $xds.Childs.SelectNodes("*")) { 
    		if ( $protectedChilds | ? {$_.logicalpath -eq $xchild.logicalpath}) { 
    			writelog ("`tChild [{0}] is already member" -f $xchild.logicalpath)
    		} 
    		else {
    			if ($xchild.Type -eq "Share" ) {
    				#cannot recurse share, add directly (servername is included in logicalpath)
    				$childtodo = $DSs | ? {$_.logicalpath -eq $xchild.logicalpath}
    				writelog ("`t++ Adding share [{0}]  ..." -f $childtodo.LogicalPath) "cyan"
    				Add-DPMChildDatasource -ProtectionGroup $mpg -ChildDatasource $childtodo -ErrorAction SilentlyContinue
    				$DStodo.count +=1
    				continue;
    			}
    			$childtodo = RecurseForChild $parent $xchild.LogicalPath
    			writelog ("`t++ Adding child [{0}] on server {1}  ..." -f $childtodo.LogicalPath, $xds.ProductionServerName) "cyan"
    			Add-DPMChildDatasource -ProtectionGroup $mpg -ChildDatasource $childtodo -ErrorAction SilentlyContinue
    			$DStodo.count +=1
    		}
    	} 
    }
    function DoExcludes{
    	param ($parent, $xds, $mpg) 
    	foreach ($xexcl in $xds.ExcludedObjects.SelectNodes("*")) {
    		$exclobj = RecurseForChild $parent $xexcl.LogicalPath
    		if ($exclobj) {
    			writelog ("`t-- Excluding {0}" -f $exclobj.LogicalPath) "yellow"
    			Remove-DPMChildDatasource $mpg -ChildDatasource $exclobj
    		}
    	} 
    }
     function DoPG {
    	param ($xgrp, $DSs, $srv)
    	#check for existing group
    	$pg = $srv.GetProtectionGroups() | ?{$_.FriendlyName -eq $xgrp.GroupName}
    	if (!$pg) { 
    		writelog ("Creating group [{0}] ..." -f $xgrp.GroupName) "Yellow"
    		$pg = new-protectiongroup -DPMServerName $srv.name -name $xgrp.GroupName
    	}
    	writelog ("Modifying group [{0}] ..." -f $xgrp.GroupName) "white"
    	$Global:mpg = Get-ModifiableProtectionGroup $pg -verbose
    
    	#excluded file types
    	if ($xgrp.PROTECTIONTOPTIONS.ExcludeFileType.Length -gt 0) {
    		writelog ("`tExcluding file types {0}" -f $xgrp.PROTECTIONTOPTIONS.ExcludeFileType.ToUpper())
    		($xgrp.PROTECTIONTOPTIONS.ExcludeFileType).split(",")| foreach {Set-DPMDatasourceProtectionOption $mpg -FileType $_ -Add}
    	}
    
    	# auto consistency check
    	if ($DPMmajor -gt 2) { 
    		switch ($xgrp.AutohealProperty) { 
    			"3" {
    				writelog "`tAuto consistency check is now ENABLED!"
    				Set-DPMDatasourceProtectionOption $mpg -AutoConsistencyCheck $true
    			}
    			"1" {
    				writelog "`tAuto consistency check is now DISABLED!"
    				Set-DPMDatasourceProtectionOption $mpg -AutoConsistencyCheck $false
    			}
    			default { writelog ("UNKNOWN AutohealProperty value = {0}" -f $xgrp.AutohealProperty ) }
    		}
    	}
    
    	#collect protected data sources
    	$protectedDSlist = @(); $srv.GetProtectionGroups() | foreach {$protectedDSlist += Get-DPMDatasource -ProtectionGroup $_ }
    	$protectedDSlist = $protectedDSlist | ? {$_ } #ensure no empty ones
    	# $inactiveDSS = @(Get-DPMDatasource -DPMServerName $srv.name -Inactive)
    
    #Add the kids to group
    	$DStoAllocate = @()
    	foreach ($xds in $xgrp.DATASOURCES.SelectNodes("*")) {
    		$DStodo = "" | select ds, calculate, count
    		# select data source object we need from inquired list
    		$DStodo.ds = $DSs | ? {($_.ProductionServerName -eq $xds.ProductionServerName) -and ($_.logicalpath -eq $xds.logicalpath )}
    		if (!($DStodo.ds)) {writelog ("[{0}] no longer exists on protected server " -f $xds.Logicalpath); continue}
    		# see if already exists
    		if ($protectedDSlist) {$protectedDS = $protectedDSlist | ? {$_.equals($DStodo.ds) }}
    		if ($protectedDS) { 
    			# when volume type check if childs need to be added else it is just an existing data source. 
    			if ($protectedDS.Type.Name -ne "Volume" ) { 
    				writelog ("`t[{0}] on server {1}  already exists!" -f $xds.name, $xds.ProductionServerName);
    				continue;
    			}
    			$DStodo.count=0
    			if (($xds.Childs.Count + $xds.ExcludedObjects) -gt 0) {
    				if ($xds.Childs.Count -gt 0 ) {DoChilds $DStodo $protectedDS $xds $mpg $DSs }
    				if ($xds.ExcludedObjects.Count -gt 0 ) {DoExcludes $DStodo.ds $xds $mpg }
    				if ($DStodo.count -gt 0) {
    					$DStodo.calculate =$true
    					$DStoAllocate += $DStodo
    				}
    				continue;
    			}
    			else {
    				# we are here if  volume type but not a child
    				writelog ("`t++Adding [{0}] on server {1} to group [{2}] for [{3}] protection..." -f $xds.name, $xds.ProductionServerName, $xgrp.GroupName, $xgrp.PGprotectionType)
    				Add-DPMChildDatasource -ProtectionGroup $mpg -ChildDatasource $DStodo.ds
    				if ($xds.ExcludedOjects.count -gt 0 )  {DoExcludes $DStodo.ds $xds $mpg }
    				if ($DStodo.count -gt 0) {
    					$DStodo.calculate =$true
    					$DStoAllocate += $DStodo
    				}
    				continue;
    			}
    		}
    		else {
    			# we are here if  new data source, if volume type check if childs need be added 
    			if (($DStodo.ds.Type.Name -eq "Volume" ) -and ($xds.Childs.Count -gt 0)) {
    				DoChilds $DStodo $protectedDS $xds $mpg $DSs
    				if ($xds.ExcludedOjects.count -gt 0 )  {DoExcludes $DStodo.ds $xds $mpg }
    				if ($DStodo.count -gt 0) {
    					$DStodo.calculate =$true
    					$DStoAllocate += $DStodo
    				}
    				continue;
    			}
    			# we are here if new app or entire volume data source 
    			writelog ("`t++Adding [{0}] on server {1} to group [{2}] for [{3}] protection..." -f $xds.name, $xds.ProductionServerName, $xgrp.GroupName, $xgrp.PGprotectionType)
    			Add-DPMChildDatasource -ProtectionGroup $mpg -ChildDatasource $DStodo.ds
    			if ($xds.ExcludedObjects.count -gt 0 )  {
    				DoExcludes $DStodo.ds $xds $mpg 
    				}
    			$DStodo.calculate = $false
    			$DStoAllocate += $DStodo
    		}
    	} #end foreach
    
    	switch ($xgrp.PGprotectiontype) {
    		"DiskToDisk" { 
    			Set-DPMProtectionType -ProtectionGroup $mpg -ShortTerm Disk
    			SetShortDiskObjectives $xgrp $mpg 
    			SetShortSchedule $xgrp $mpg
    			DoDiskAllocation $mpg $DStoAllocate $xgrp $AllocationIntent
    		}
    		"DiskToTape" { 
    			#we also get here when both (D2T2T) are tape, bail-out and debug ?
    			#if ($xgrp.IsTapeLongTerm) {Throw "STRANGE => debug/verify ::  IsTapeLongTerm=True on DiskToTape case!?"}
    			
    			# Objectives & schedules
    			if (($xgrp.IsTapeShortTerm -eq "True") -and  ($xgrp.IsTapeLongTerm -eq "False") ){	
    				Set-DPMProtectionType -ProtectionGroup $mpg -ShortTerm Media 
    				SetShortTapeObjectives $xgrp $mpg 
    				SetShortSchedule $xgrp $mpg	
    			}
    
    			if  (($xgrp.IsTapeShortTerm -eq "False") -and  ($xgrp.IsTapeLongTerm -eq "True") ){	
    					if ($DPMmajor -gt 2 ) {Set-DPMProtectionType -ProtectionGroup $mpg  -LongTerm Tape}
    					else {Set-DPMProtectionType -ProtectionGroup $mpg -LongTerm}
    					SetLongTapeObjectives $xgrp $mpg 	
    					SetLongTapeSchedule $xgrp $mpg 
    			}
    			
    			if  (($xgrp.IsTapeShortTerm -eq "True") -and  ($xgrp.IsTapeLongTerm -eq "True") ){	
    					if ($DPMmajor -gt 2 ) {Set-DPMProtectionType -ProtectionGroup $mpg  -ShortTerm Media -LongTerm Tape}
    					else {Set-DPMProtectionType -ProtectionGroup $mpg -ShortTermMedia -LongTerm}
    					SetShortTapeObjectives $xgrp $mpg 
    					SetShortSchedule $xgrp $mpg	
    					SetLongTapeObjectives $xgrp $mpg 	
    					SetLongTapeSchedule $xgrp $mpg 
    			}	
    			SetTapeOptions $xgrp $mpg $srv 
    		}
    		"DiskToDiskToTape" { 
    			if ($DPMmajor -gt 2) {Set-DPMProtectionType -ProtectionGroup $mpg -ShortTerm Disk -LongTerm Tape }
    			else {Set-DPMProtectionType -ProtectionGroup $mpg -ShortTerm Disk -LongTerm} 
    			
    			#Objectives & Schedules
    			SetShortDiskObjectives $xgrp $mpg 
    			SetLongTapeObjectives $xgrp $mpg
    			SetShortSchedule $xgrp $mpg
    			SetLongTapeSchedule $xgrp $mpg
    			
    			SetTapeOptions $xgrp $mpg $srv 
    			DoDiskAllocation $mpg $DStoAllocate $xgrp 
    		} 
    		"DiskToTapeToTape" { 
    			#not sure when this is used ?
    			if ($srv.GetProductInformation().Version.Major -gt 2) {Set-DPMProtectionType -ProtectionGroup $mpg -ShortTerm Tape -LongTerm Tape }
    			else {Set-DPMProtectionType -ProtectionGroup $mpg -ShortTerm Media -LongTerm}
    			#Objectives
    			if ($xgrp.IsDiskShortTerm -eq "True") { 
    				SetShortDiskObjectives $xgrp $mpg 
    				SetShortSchedule $xgrp $mpg 
    			}
    			if ($xgrp.IsTapeShortTerm -eq "True") {	
    				SetShortTapeObjectives $xgrp $mpg 
    				SetShortSchedule $xgrp $mpg 
    			}
    			if ($xgrp.IsTapeLongTerm -eq "True") {
    				SetLongTapeObjectives $xgrp $mpg 
    				SetLongTapeSchedule $xgrp $mpg 
    			}
    			SetTapeOptions $xgrp $mpg $srv
    		}
    		"DiskToDiskToCloud" { 
    			Throw "DiskToDiskToCloud not yet tested!"
    			#Set-DPMProtectionType -ProtectionGroup $mpg -ShortTerm Disk -LongTerm Online  #build 7336
    			Set-DPMProtectionType -ProtectionGroup $mpg -ShortTerm Disk -LongTerm Tape #RC build
    			# Objectives  & schedules
    			if ($xgrp.IsDiskShortTerm -eq "True") { 
    				SetShortDiskObjectives $xgrp $mpg 
    				SetShortSchedule $xgrp $mpg 
    			}
    			if ($xgrp.IsTapeLongTerm -eq "True") {	
    				SetLongTapeObjectives $xgrp $mpg 
    				SetLongTapeSchedule $xgrp $mpg 
    			}
    			if ($xgrp.IsCloudLongTerm -eq "True")  {
    				SetOnlineObjectives $xgrp $mpg 
    				SetOnlineSchedule $xgrp $mpg
    			}
    			DoDiskAllocation $mpg $DStoAllocate $xgrp 
    		}
    		"DiskToDiskToCloudAndTape" { 
    			Throw "DiskToDiskToCloudAndTapenot yet tested!"
    			Set-DPMProtectionType -ProtectionGroup $mpg -ShortTerm Disk -LongTerm OnlineAndTape
    			
    			# Objectives  & schedules
    			if ($xgrp.IsDiskShortTerm -eq "True") { 
    				SetShortDiskObjectives $xgrp $mpg 
    				SetShortSchedule $xgrp $mpg 
    			}
    			if ($xgrp.IsTapeLongTerm -eq "True") {	
    				SetLongTapeObjectives $xgrp $mpg 
    				SetLongTapeSchedule $xgrp $mpg 
    			}
    			if ($xgrp.IsCloudLongTerm -eq "True")  {
    				SetOnlineObjectives $xgrp $mpg 
    				SetOnlineSchedule $xgrp $mpg
    			}
    			SetTapeOptions $xgrp $mpg $srv
    			DoDiskAllocation $mpg $DStoAllocate $xgrp 
    		}
    		default {writelog ("Unknown protection type [{0}]" -f $xgrp.PGprotectiontype)}
    	} #end switch
    	
    	writelog ("Committing protectiongroup [{0}]" -f $xgrp.Groupname)
    	$2ndmpg = Get-DPMModifiableProtectionGroup $mpg #need to redo this for some reason ?
    	Set-DPMprotectiongroup $2ndmpg
    	writelog ("Processing group [{0}] finished" -f $xgrp.GroupName)
    	#END
    }
    function DoDiskAllocation {
    	param ($mpg, $DStoAllocate, $xgrp  )
    
    	foreach ($DSrecord in $DStoAllocate) {
    		$DSal = $DSrecord.ds
    		$xpathstring = "*[attribute::Logicalpath='{0}']" -f $DSal.logicalpath	
    		switch ($AllocationIntent) {
    			"Required" {
    				writelog ("`tAllocating according REQUIRED space for [{0}]..." -f $DSal.Name) "white"
    				[void](Get-DPMDatasourceDiskAllocation -Datasource $DSal)
    				[int64]$Ralloc= ($xgrp.DATASOURCES.SelectNodes("$xpathstring")).item(0).RequiredReplicaSize
    				[int64]$Salloc = ($xgrp.DATASOURCES.SelectNodes("$xpathstring")).item(0).RequiredShadowCopyAreaSize
    				if (($Ralloc / $GB) -lt 1.01) {$Ralloc = 1.01*$GB} ; if (($Salloc/$GB) -lt 1.57) { $Salloc = 1.57 * $GB}
    				writelog ("`tAllocating {0}GB for Replica volume and {1}GB for Recoverypoint volume" -f ($Ralloc/$GB).Tostring("N2"), ($Salloc/$GB).Tostring("N2") ) "Cyan"
    				Set-DPMDatasourceDiskAllocation -Datasource $DSal -ProtectionGroup $mpg -Manual -ReplicaArea $Ralloc -ShadowCopyArea $Salloc
    			}
    			"Used" {
    				writelog ("`tAllocating according USED space for [{0}]..." -f $DSal.Name)  "white"
    				[void](Get-DPMDatasourceDiskAllocation -Datasource $DSal)
    				[int64]$Ralloc = ($xgrp.DATASOURCES.SelectNodes("$xpathstring")).item(0).ReplicaUsedSpace
    				[int64]$Salloc = ($xgrp.DATASOURCES.SelectNodes("$xpathstring")).item(0).ShadowCopyUsedSpace
    				if (($Ralloc / $GB) -lt 1.01) {$Ralloc = 1.01*$GB} ; if (($Salloc/$GB) -lt 1.57) { $Salloc = 1.57 * $GB}
    				writelog ("`tAllocating {0}GB for Replica volume and {1}GB for Recoverypoint volume" -f ($Ralloc/$GB).Tostring("N2"), ($Salloc/$GB).Tostring("N2") ) "Cyan"
    				Set-DPMDatasourceDiskAllocation -Datasource $DSal -ProtectionGroup $mpg -Manual -ReplicaArea $Ralloc -ShadowCopyArea $Salloc
    			}
    			default {
    				writelog ("`tAllocating  DPM -Calculate = {0} for [{1}]..." -f $DSrecord.calculate, $DSal.Name)  "white"
    				switch ($DSal.Type.Name ) {
    					"Volume" {
    						if ($DSrecord.calculate) {[void](Get-DPMDatasourceDiskAllocation -Datasource $DSal -CalculateSize) }
    						else { [void](Get-DPMDatasourceDiskAllocation -Datasource $DSal)  }
    					}
    					"Share" {
    						if ($DSrecord.calculate) {[void] (Get-DPMDatasourceDiskAllocation -Datasource $DSal -CalculateSize) }
    						else { [void](Get-DPMDatasourceDiskAllocation -Datasource $DSal )}					
    					}	
    					default {
    						 [void](Get-DPMDatasourceDiskAllocation -Datasource $DSal )
    					}
    				}
    				Set-DPMDatasourceDiskAllocation  -Datasource $DSal  -ProtectionGroup $mpg
    				if (($DPMmajor -gt 2) -and ($xgrp.IsAutoGrowenabled -eq "True")) { 
    					writelog "`tAUTOGROW enabled!" "white"
    					Set-DPMDatasourceDiskAllocation -ProtectionGroup $mpg -AutoGrow $true
    				}
    			}	
    		}	
    		Set-DPMReplicaCreationMethod -ProtectionGroup $mpg -Manual
    	}
    }
    function SetShortSchedule {
    	param ( $xgrp, $mpg)
    	$xschedules = @($xgrp.SHORTTERMPOLICY.SCHEDULES.SelectNodes("*")) 
    	if ($xschedules.Count -lt 1) {writelog "No SHORT term schedules saved!"; return}
    	foreach ($xsch in $xschedules) {
    		writelog ("`tSetting short term schedule [{0}]" -f $xsch.Jobtype)
    		switch ($xsch.Jobtype) {
    			#Note: this switches on "JobType" and NOT "JobTypeString"  which is slightly different and may be confusing
    			#Note: there are 'timeSofday' / 'daysSofweek' (multiple) but also 'timeofday' / 'dayof week' (single)
    			#Note:  'Son' = daily / 'Father' = daily or  weekly / 'GrandFather' = monthly / 'GreatGrandFather' = monthly or yearly
    			#Note: 'Onsite*' = short term / 'Offsite*' = long term 
    
    			"ShadowCopy" {
    				# multiple days and times, can be just 1
    				$sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -ShortTerm | ? { $_.JobType -eq $xsch.Jobtype } 
    				$dow = $xsch.WeekDays.Split(","); $tod = $xsch.TimesOfDay.Split(",")
    				set-dpmpolicyschedule -ProtectionGroup $mpg -Schedule $sched -daysofweek $dow -timesofday $tod -ErrorAction SilentlyContinue
    				set-dpmpolicyschedule -ProtectionGroup $mpg -OffsetInMinutes $xgrp.ScheduleOffset -ErrorAction SilentlyContinue 
    			} 
    			"OnsiteSonArchive" {
    				# daily incremental
    				$sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -ShortTerm | ? { $_.JobType -eq $xsch.Jobtype } 
    				set-dpmpolicyschedule -ProtectionGroup $mpg -Schedule $sched -timeofday $xsch.ScheduleTime -ErrorAction SilentlyContinue
    			}
    			"OnsiteFatherArchive" {
    				# single day and time
    				$sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -ShortTerm | ? { $_.JobType -eq $xsch.Jobtype } 
    				set-dpmpolicyschedule -ProtectionGroup $mpg -Schedule $sched -dayofweek $xsch.weekday -timeofday $xsch.ScheduleTime -ErrorAction SilentlyContinue
    			}
    			"Replication" {
    				# $sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -ShortTerm  |  ? { $_.JobType -eq  $xsch.Jobtype }	
    				# SynchronizationFrequency is set as part of policy objective
    				set-dpmpolicyschedule -ProtectionGroup $mpg -OffsetInMinutes $xgrp.ScheduleOffset -ErrorAction SilentlyContinue 
    			}
    			"FullReplicationForApplication" {
    				# multiple days and times, can be just 1
    				#$sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -ShortTerm | ? { $_.JobType -eq $xsch.Jobtype }
    				$sched = Get-PolicySchedule -ProtectionGroup $mpg -ShortTerm
    				$dow = $xsch.WeekDays.Split(","); $tod = $xsch.TimesOfDay.Split(",")
    				set-dpmpolicyschedule -ProtectionGroup $mpg -Schedule $sched -DaysOfWeek $dow -TimesOfDay $tod -ErrorAction SilentlyContinue
    				set-dpmpolicyschedule -ProtectionGroup $mpg -OffsetInMinutes $xgrp.ScheduleOffset -ErrorAction SilentlyContinue
    			}
    			"DiskAutoValidation" { 
    				# time and max. duration
    				$sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -ShortTerm | ? { $_.JobType -eq $xsch.Jobtype }
    				set-dpmprotectionjobstarttime $mpg -JobType ConsistencyCheck -TimeOfDay $xsch.StartTime -MaximumDurationInHours $xsch.MaxDuration -ErrorAction SilentlyContinue
    			}
    			default { writelog ("SHORT TERM schedule type [{0}] not yet implemented" -f $xsch.Jobtype) "Magenta"}
    		}
    	} 
    }
    function SetLongTapeSchedule {
    	param ($xgrp, $mpg)
    	$xschedules = @($xgrp.LONGTERMPOLICY.SCHEDULES.SelectNodes("*")) 
    	if ($xschedules.Count -lt 1) {writelog "No LONG term schedules saved!"; return}
    	foreach ($xsch in $xschedules) {
    		writelog ("`tSetting long term schedule [{0}]" -f $xsch.Jobtype) 
    		#Must set 'IsCustomScheme' to properly initialize $sched.Interval (read only and must be 1,3,6 or 12)
    		#Otherwise aborts set-dpmpolicyschedule on invalid value exception
    		if ($xgrp.ARCHIVEINTENT.IsCustomScheme -eq "True") {
    			$mpg.ArchiveIntent.IsCustomScheme=$true
    		} 
    		else {
    			$mpg.ArchiveIntent.IsCustomScheme=$false
    		} 
    		switch ($xsch.Jobtype) {
    			"OffsiteFatherArchive" {
    				if ($DPMmajor -gt 2 ) {$sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -LongTerm "Tape" | ? { $_.JobType -eq $xsch.Jobtype }}
    				else { $sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -LongTerm | ? { $_.JobType -eq $xsch.Jobtype }}
    				if (!($sched)) {writelog ("`tSkipping [{0}] because no schedule was returned" -f $xsch.Jobtype) "Cyan"; return}
    				if ($xsch.RelativeInterval -eq "None") {
    					if ($xsch.Weekday -eq "None") { set-dpmpolicyschedule -ProtectionGroup $mpg -Schedule $sched -TimeOfDay $xsch.ScheduleTime -ErrorAction silentlycontinue}
    					else {set-dpmpolicyschedule -ProtectionGroup $mpg -Schedule $sched -TimeOfDay $xsch.ScheduleTime -DayOfWeek $xsch.Weekday -ErrorAction silentlycontinue }	
    				}
    				else { set-dpmpolicyschedule $mpg $sched -StartTime $xsch.ScheduleTime -RelativeInterval $xsch.RelativeInterval -DayOfWeek $xsch.RelativeWeekday -ErrorAction SilentlyContinue}
    			}
    			"Offsite1FatherArchive" {
    				if ($DPMmajor -gt 2 ) {$sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -LongTerm "Tape" | ? { $_.JobType -eq $xsch.Jobtype }}
    				else { $sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -LongTerm | ? { $_.JobType -eq $xsch.Jobtype }}
    				if (!($sched)) {writelog ("`tSkipping [{0}] because no schedule was returned" -f $xsch.Jobtype) "Cyan"; return}
    				if ($xsch.RelativeInterval -eq "None") {
    					if ($xsch.Weekday -eq "None") { set-dpmpolicyschedule -ProtectionGroup $mpg -Schedule $sched -TimeOfDay $xsch.ScheduleTime -ErrorAction silentlycontinue}
    					else {set-dpmpolicyschedule -ProtectionGroup $mpg -Schedule $sched -TimeOfDay $xsch.ScheduleTime -DayOfWeek $xsch.Weekday -ErrorAction silentlycontinue }	
    				}
    				else { set-dpmpolicyschedule $mpg $sched -StartTime $xsch.ScheduleTime -RelativeInterval $xsch.RelativeInterval -DayOfWeek $xsch.RelativeWeekday -ErrorAction SilentlyContinue}
    			}
    			"OffsiteGrandFatherArchive" {
    				if ($DPMmajor -gt 2 ) {$sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -LongTerm "Tape" | ? { $_.JobType -eq $xsch.Jobtype }}
    				else { $sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -LongTerm | ? { $_.JobType -eq $xsch.Jobtype }}
    				if (!($sched)) {writelog ("`tSkipping [{0}] because no schedule was returned" -f $xsch.Jobtype) "Cyan"; return}
    				if ($xsch.RelativeInterval -eq "None") {
    					if ($xsch.Weekday -eq "None") { set-dpmpolicyschedule -ProtectionGroup $mpg -Schedule $sched -TimeOfDay $xsch.ScheduleTime -ErrorAction silentlycontinue}
    					else {set-dpmpolicyschedule -ProtectionGroup $mpg -Schedule $sched -TimeOfDay $xsch.ScheduleTime -DayOfWeek $xsch.Weekday -ErrorAction silentlycontinue }	
    				} 
    				else {set-dpmpolicyschedule $mpg $sched -StartTime $xsch.ScheduleTime -RelativeInterval $xsch.RelativeInterval -DayOfWeek $xsch.RelativeWeekday -ErrorAction SilentlyContinue}
    			}
    			"OffsiteGreatGrandFatherArchive" { 
    				if ($DPMmajor -gt 2 ) {$sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -LongTerm "Tape" | ? { $_.JobType -eq $xsch.Jobtype }}
    				else { $sched = Get-DPMPolicySchedule -ProtectionGroup $mpg -LongTerm | ? { $_.JobType -eq $xsch.Jobtype }}
    				if (!($sched)) {writelog ("`tSkipping [{0}] because no schedule was returned" -f $xsch.Jobtype) "Cyan"; return}
    				if ($xsch.RelativeInterval -eq "None") {
    					if ($xsch.Weekday -eq "None") { set-dpmpolicyschedule -ProtectionGroup $mpg -Schedule $sched -TimeOfDay $xsch.ScheduleTime -ErrorAction silentlycontinue}
    					else {set-dpmpolicyschedule -ProtectionGroup $mpg -Schedule $sched -TimeOfDay $xsch.ScheduleTime -DayOfWeek $xsch.Weekday -ErrorAction silentlycontinue }	
    				} 
    				else {set-dpmpolicyschedule $mpg $sched -StartTime $xsch.ScheduleTime -RelativeInterval $xsch.RelativeInterval -DayOfWeek $xsch.RelativeWeekday -ErrorAction SilentlyContinue}
    			}
    			default { writelog ("LONG TERM schedule type not yet [{0}] implemented" -f $xsch.Jobtype) "Magenta"}
    		} #end switch
    	} #end foreach	
    }
    function SetOnlineSchedule {
    	param ($xgrp, $mpg)
    	WRITELOG "CLOUD/ONLINE SCHEDULE ARE NOT YET IMPLEMENTED" ; return
    }
    function SetShortDiskObjectives {
    	param ($xgrp, $mpg)
    	writelog ("`tSetting short term disk objectives for [{0}]" -f $xgrp.PGPRotectionType)
    	if ($xgrp.ReplicateBeforeShadowCopy -eq "True") {set-dpmpolicyobjective $mpg -RetentionRangeInDays $xgrp.SHORTTERMPOLICY.RECOVERYRANGE.Range -BeforeRecoveryPoint}
    	else {set-dpmpolicyobjective $mpg -RetentionRangeInDays $xgrp.SHORTTERMPOLICY.RECOVERYRANGE.Range -SynchronizationFrequency $xgrp.SHORTTERMPOLICY.SCHEDULES.Replication.Frequency}
    	if (($xgrp.DATASOURCES.SelectNodes("*[attribute::IsCollocated='True']")).count -gt 0 ) { set-dpmpolicyobjective -ProtectionGroup $mpg -CollocateDatasources $true}
    }
    function SetShortTapeObjectives {
    	param($xgrp, $mpg)
    	writelog ("`tSetting short term tape objectives for [{0}]" -f $xgrp.PGPRotectionType)
    	if ($xgrp.SHORTTERMPOLICY.AllowIncrementals -eq "True") {
    		set-dpmpolicyobjective $mpg -RetentionRangeInWeeks $xgrp.SHORTTERMPOLICY.RECOVERYRANGE.Range -ShortTermBackupFrequency $xgrp.SHORTTERMPOLICY.SCHEDULES.OnsiteSonArchive.Frequency -CreateIncrementals
    	}
    	else {
    		set-dpmpolicyobjective $mpg -RetentionRangeInWeeks $xgrp.SHORTTERMPOLICY.RECOVERYRANGE.Range -ShortTermBackupFrequency $xgrp.SHORTTERMPOLICY.SCHEDULES.OnsiteSonArchive.Frequency 
    	}
    }
    function SetLongTapeObjectives {
    	param($xgrp, $mpg)
    	writelog ("`tSetting long term tape objectives for [{0}]" -f $xgrp.PGPRotectionType)
    
    	if ($xgrp.ARCHIVEINTENT.IsCustomScheme -eq "True") { 
    		# Must initialize label information  else the CLI will terminate
    		$linfo = New-Object -TypeName Microsoft.Internal.EnterpriseStorage.Dls.XsdClasses.MM.Interface.labelinfo
    		$vaults = @( $xgrp.ARCHIVEINTENT.LabelInfoVaults.split(","))
    		$labels = @( $xgrp.ARCHIVEINTENT.LabelInfoLabels.split(","))
    		$gens = @( $xgrp.ARCHIVEINTENT.LabelInfoGeneration.split(","))
    		$linfo.Vault = $vaults
    		$linfo.label=$labels
    		$linfo.Generation=$gens
    		$mpg.ArchiveIntent.LabelInfo=$linfo
    		$RRlist = @(); $FRQlist = @();$GENlist = @();
    		#select offsite policies only
    		foreach ($el in $xgrp.RETENTIONPOLICY.SelectNodes("*") | ? { ($_.enabled -eq $true) -and ($_.name -match "offsite")} ) {
    			$RRList += (new-object -TypeName Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.RetentionRange -ArgumentList $el.range, $el.unit)
    		}
    		foreach ($el in $xgrp.LONGTERMPOLICY.SCHEDULES.SelectNodes("*") ) {
    			$GENlist += $el.Generation
    			$FRQlist += GetBckFreqEnum $el.Frequency
    		}
    		set-dpmpolicyobjective $mpg -RetentionRangeList $RRlist -FrequencyList $FRQlist -GenerationList $GENlist
    	}
    	else {
    		$range = $xgrp.LONGTERMPOLICY.RECOVERYRANGE.Range
    		$unit = $xgrp.LONGTERMPOLICY.RECOVERYRANGE.Unit
    		$RR = new-object -TypeName Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.RetentionRange -ArgumentList $range, $unit
    		set-dpmpolicyobjective $mpg -RetentionRange $RR -LongTermBackupFrequency $xgrp.LONGTERMPOLICY.Frequency
    	}
    }
    function SetOnlineObjectives {
    	param($xgrp, $mpg)
    	WRITELOG "CLOUD/ONLINE OBJECTIVES ARE NOT YET IMPLEMENTED" ; return
    	# 	$RRlist=@(); $FRQlist=@();$GENlist=@(); 
    # 	foreach ($el in $xgrp.ONLINEPOLICY.SCHEDULES.SelectNodes("*") ) {
    # 			$FRQlist += GetBckFreqEnum $el.Frequency
    # 			$GENlist += $el.Generation
    # 			$range = $el.interval ;	$unit = GetUnitString $el.Frequency
    # 			$RR = new-object -TypeName Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.RetentionRange -ArgumentList $range, $unit
    # 			$RRlist += $RR
    # 	}
    # 	set-dpmpolicyobjective $mpg -RetentionRangeList $RRlist -FrequencyList $FRQlist -GenerationList $GENlist
    }
    function SetTapeOptions {
    	param($xgrp, $mpg, $srv)
    	writelog ("`tSetting tape options for [{0}]" -f $xgrp.PGPRotectionType)
    	#select lib with highest  number drives
    	$curLibs = @(Get-DPMLibrary -DPMServerName $srv.Name | ? {(($_.IsOffline -eq $false) -and ($_.IsEnabled -eq $true))})
    	$selectlib = $curlibs[0]
    	$curlibs | foreach {
    		if ($_.GetDriveCollection().Count -ge $selectlib.GetDriveCollection().Count) {
    			$selectlib = $_
    			writelog ("`tSelecting {0}-drive library [{1}] " -f $_.GetdriveCollection().Count, $_.userfriendlyname)
    		}
    	}
    	if (!($selectlib)) {writelog "WARNING: Skipping library assignment due to no enabled online libraries found" "Cyan"; return;}
    
    	if ($xgrp.PGPRotectionType -eq "DiskToTape") {
    		# This is the only tape-shortterm situation
    		if ($xgrp.ARCHIVEINTENT.OnsiteCompression -eq "True") {Set-DPMTapeBackupOption $mpg -Shortterm -CompressData}
    		if ($xgrp.ARCHIVEINTENT.OnsiteEncryption -eq "True") {
    			writelog ("Enabling encryption for group {0} which will disable compression" -f $xgrp.GroupName)
    			Set-DPMTapeBackupOption $mpg -Shortterm -EncryptData 
    		}
    	}
    	else {
    		#All longterm tape situations
    		if ($xgrp.ARCHIVEINTENT.OffsiteCompression -eq "True") {Set-DPMTapeBackupOption $mpg -Longterm -CompressData}
    		if ($xgrp.ARCHIVEINTENT.OffsiteEncryption -eq "True") {
    			writelog ("Enabling encryption for group {0} which will disable compression" -f $xgrp.GroupName)
    			Set-DPMTapeBackupOption $mpg -Longterm -EncryptData 
    		}
    	}
    	#assign libs
    	if ($selectlib.GetDriveCollection().count -gt 1) {Set-DPMTapeBackupOption $mpg -BackupLibrary $selectlib -TapeCopyLibrary $selectlib -DrivesAllocated $xgrp.ARCHIVEINTENT.NumberOfDrives}
    	else {Set-DPMTapeBackupOption $mpg -BackupLibrary $selectlib -DrivesAllocated $xgrp.ARCHIVEINTENT.NumberOfDrives}
    
    	if ($xgrp.ARCHIVEINTENT.CancelOverlappingJobs -eq "True") {$mpg.ArchiveIntent.CancelOverlappingJobs = $true}
    	else {$mpg.ArchiveIntent.CancelOverlappingJobs = $false}
    	if ($xgrp.ARCHIVEINTENT.DatasetVerificationIntent-eq "True") { $mpg.ArchiveIntent.DataSetVerificationIntent=$true}
    	else {$mpg.ArchiveIntent.DataSetVerificationIntent = $false}
    	if ($xgrp.ARCHIVEINTENT.MediaEraseIntent -eq "True") { $mpg.ArchiveIntent.MediaEraseIntent = $true }
    	else { $mpg.ArchiveIntent.MediaEraseIntent = $false}
    	if ($xgrp.ARCHIVEINTENT.Compression -eq "True") { $mpg.ArchiveIntent.Compression = $true }
    	else { $mpg.ArchiveIntent.Compression = $false}
    }
    function GetBckFreqEnum {
    	param ($k)
    	# BackupFrequency strings need be passed as representing Int32 of backupfrequency enum list that we mimic here
    	switch ($k) {
    		"Yearly" {return 6}
    		"Halfyearly" {return 5}
    		"Quarterly" {return 4}
    		"Monthly" {return 3}
    		"Biweekly" {return 2}
    		"Weekly" { return 1}
    		"Daily" { return 0} 
    		default {writelog "Unknown BackupFrequency [$k], defaulting to Weekly" "Magenta" ;return 1;}
    	}
    }
    #endregion 
    
    #START
    $Error.clear()
    $version = "v0.94"
    $global:DPMmajor = 0
    [datetime]$now = Get-Date
    $format = "HH:mm:ss"
    $global:MB = 1024 * 1024
    $global:GB = 1024 * $MB
    $oldpref = $ConfirmPreference
    $ConfirmPreference = "None"
    #$WarningPreference = "SilentlyContinue"
    showhelp
    #LoadDPMsnapin
    {if ($configfile -eq "" ) {$configfile = "{0}\DPMsaveConfig.XML" -f , (get-location)}
    $logfile = "{0}\DPMcreateConfig.LOG" -f , (get-location)
    if (Test-Path $configfile -ErrorAction silentlycontinue) {[xml]$xml = Get-Content $configfile}
    else {Throw "Config file not found: $configfile"}}
    
    writelog ("Configuration was saved by script version {0} and being parsed by $version" -f $xml.DPMConfig.scriptversion)
    foreach ($node in $xml.DPMConfig.SelectNodes("*")) {
    	if ($dpmserverlist.count -gt 0) { 
    		if ($dpmserverlist -match $node.Dpmservername) {DoDPM $node}
    	}
    	else {DoDpm $node}
    
    }
    writelog "Finished, output saved to $logfile"
    $ConfirmPreference = $oldpref

    Tuesday, May 15, 2012 3:05 PM
  • XML created by DPMSaveConfig and usered by DPMCreateConfig

    XML Created from DPMSaveConfig
    
    <?xml version="1.0" encoding="utf-8"?>
    <DPMConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" scriptversion="v0.94">
      <backup01 Domain="ourdomain.com" Dpmservername="backup01" DpmMajorVersion="4" DpmMinorVersion="0" DpmBuild="1617">
        <GLOBALS IsNetworkChecksumRequired="True" TruncateSharePointDbLogs="True" LibraryRefreshInterval="0" ExchangeSCRProtection="False" AllowLocalDataProtection="True" TapeExpiryTolerance="17" />
        <REGISTRY>
          <TapeSize Path="HKLM:\Software\Microsoft\Microsoft Data Protection Manager\Agent\" Value="0" />
        </REGISTRY>
        <REPLICALIST>
          <AR0 PhysicalReplicaId="e23e1787-c26f-44c0-9480-dc8de90ff972" ReplicaId="79bd2fde-f968-4708-b3cd-f1ec5b6f095e" DataSourceId="d65b6875-0230-4e8a-ba7a-ad891296680e" />
          <AR1 PhysicalReplicaId="08f6e691-bdd1-44ce-93a6-254a66cf2057" ReplicaId="ff83a702-7162-4c22-9f04-4cc7e501cbe8" DataSourceId="9eee8b2f-480a-42dd-a3c3-ab828d5a7eb4" />
          <AR2 PhysicalReplicaId="29323511-9609-4d8a-b081-a44a7544c72a" ReplicaId="5abf44ec-786e-4b87-9ad1-5d70f9b1f837" DataSourceId="804fba25-f040-46b9-8764-c9e6a0f52a78" />
          <AR3 PhysicalReplicaId="372c47db-bb39-413e-9b33-dd4400611ae1" ReplicaId="b167da3a-ae8b-456e-a1ad-fe0a70e97427" DataSourceId="eb24a502-fc18-48aa-9224-e7ee109970c9" />
          <AR4 PhysicalReplicaId="38dedeba-2a50-4502-8e56-70cd97778799" ReplicaId="a249790c-e835-478e-8883-68ad583e7b22" DataSourceId="2f581224-b51b-4a62-9aa6-d5c98e3b2288" />
          <AR5 PhysicalReplicaId="bcfe0d4f-05ed-4fd0-a091-fa2931fdf740" ReplicaId="ebccc16c-0381-4273-965b-871b71f4d069" DataSourceId="86dba845-7d33-4bab-82f6-cfc1f726de90" />
          <AR6 PhysicalReplicaId="fae3e688-7eda-457e-976b-b55b6948cbac" ReplicaId="9ed6ef60-5e7f-4c47-ac3b-e138a865f162" DataSourceId="12ece3d7-7186-4a92-a333-12f5e465f896" />
          <AR7 PhysicalReplicaId="7194d5be-f7b4-4f14-b0b2-82cfbec29021" ReplicaId="3315c524-07e1-4b72-bfcd-4eb82ef2b140" DataSourceId="a48ed3bc-4e70-4fc7-b5c4-2615cecd2f4f" />
          <AR8 PhysicalReplicaId="669858e4-2dbf-4ec4-92cc-42dd71f4f308" ReplicaId="ca53f861-dec8-42aa-8936-4e2249dd7cc1" DataSourceId="1ecd31e8-c4c3-4bba-8c13-6631b9064407" />
          <AR9 PhysicalReplicaId="73a6903c-947a-4975-bc59-d83c2d583250" ReplicaId="c75cde98-5bb1-44a9-a120-f20c8365c504" DataSourceId="a4d50ab6-cb80-4a7b-9b3e-35c6d076f840" />
          <AR10 PhysicalReplicaId="fa551a08-f9b8-4f56-a13e-a51d0ccac5df" ReplicaId="fa551a08-f9b8-4f56-a13e-a51d0ccac5df" DataSourceId="c19abcfa-2716-495e-a940-60a62ae6e86c" />
          <AR11 PhysicalReplicaId="e92f8ee3-fdcf-4e53-95ee-0941a6f43639" ReplicaId="e92f8ee3-fdcf-4e53-95ee-0941a6f43639" DataSourceId="13e3ea88-f9be-4356-86e4-7d14acbd061a" />
          <AR12 PhysicalReplicaId="fa9464a8-63f8-4e61-8d1f-1a8c74725920" ReplicaId="fa9464a8-63f8-4e61-8d1f-1a8c74725920" DataSourceId="0e2df028-9e9c-4fc6-9902-846f594b9974" />
          <AR13 PhysicalReplicaId="0658df8b-ee8e-4fde-861b-d7e3cefb4860" ReplicaId="0658df8b-ee8e-4fde-861b-d7e3cefb4860" DataSourceId="76553038-78ed-491f-8ccd-5058617fd704" />
          <AR14 PhysicalReplicaId="9c4deba3-104f-4df5-b988-a7f5866236c0" ReplicaId="9c4deba3-104f-4df5-b988-a7f5866236c0" DataSourceId="a2631d64-ff83-4279-bb9a-385e5b86e55c" />
          <AR15 PhysicalReplicaId="5f83bc9c-4023-44da-a4fc-0202a24e39dc" ReplicaId="5f83bc9c-4023-44da-a4fc-0202a24e39dc" DataSourceId="6545e256-9cd9-4289-8b4a-40d10cae18ff" />
          <AR16 PhysicalReplicaId="6fe44c07-6761-4b9a-aec4-0d602fe55337" ReplicaId="6fe44c07-6761-4b9a-aec4-0d602fe55337" DataSourceId="2a8cf4e4-7ef3-44da-bfe3-4f2299ac2ac6" />
          <AR17 PhysicalReplicaId="79c33c1e-b901-41f9-a492-8593106358c1" ReplicaId="79c33c1e-b901-41f9-a492-8593106358c1" DataSourceId="16eddd4c-63a1-4e5e-bd412ea237241b" />
          <AR18 PhysicalReplicaId="dc31b594-cfba-44e0-a512-4d99c06e065c" ReplicaId="dc31b594-cfba-44e0-a512-4d99c06e065c" DataSourceId="7998fac8-f50b-4c04-a3ad-ee129f9fd0b1" />
          <AR19 PhysicalReplicaId="8783e625-d987-434d-acc1-bb73d721b999" ReplicaId="8783e625-d987-434d-acc1-bb73d721b999" DataSourceId="30a6d2e2-35f5-4b47-b3f6-f9411df2fc00" />
          <AR20 PhysicalReplicaId="15cbc42f-da72-463b-b0b5-dd5c033f6614" ReplicaId="15cbc42f-da72-463b-b0b5-dd5c033f6614" DataSourceId="5b7fe881-bd20-4ede-a0e0-d70807adbe03" />
          <AR21 PhysicalReplicaId="ac5d1793-a1ce-453d-b470-4b9e629121e4" ReplicaId="ac5d1793-a1ce-453d-b470-4b9e629121e4" DataSourceId="1e137781-9209-43e8-b7db-86e37a9b3eee" />
          <AR22 PhysicalReplicaId="f06cfeec-1f21-44a6-8db7-d372c43cbfab" ReplicaId="f06cfeec-1f21-44a6-8db7-d372c43cbfab" DataSourceId="baf8a334-5c61-48ec-bf1d-bfa32b84a580" />
          <AR23 PhysicalReplicaId="f7fadd6b-afdc-4768-8447-d88be1ccf227" ReplicaId="f7fadd6b-afdc-4768-8447-d88be1ccf227" DataSourceId="8d141c5e-531f-4904-bb40-d53acb04516f" />
          <AR24 PhysicalReplicaId="b9618b6f-79d9-4410-a735-289d866e4552" ReplicaId="b9618b6f-79d9-4410-a735-289d866e4552" DataSourceId="01b2bfe1-b8f7-4168-a8bb-35ad2d37e7af" />
          <AR25 PhysicalReplicaId="5b4381e8-a21d-4fae-b473-b4065b435152" ReplicaId="5b4381e8-a21d-4fae-b473-b4065b435152" DataSourceId="61ae2f06-9dd4-43de-8b69-04e008702202" />
          <AR26 PhysicalReplicaId="ca837b2c-c7b8-49bf-aad4-566c9db04860" ReplicaId="ca837b2c-c7b8-49bf-aad4-566c9db04860" DataSourceId="7e71ec6f-1d91-4656-81a0-307c161312f6" />
          <AR27 PhysicalReplicaId="0d27db7b-f6f1-4d6d-b50e-d83cf973e4b6" ReplicaId="0d27db7b-f6f1-4d6d-b50e-d83cf973e4b6" DataSourceId="ec558487-69fc-479e-adfc-d3e2b976dc25" />
          <AR28 PhysicalReplicaId="44c75c84-ef1f-4fde-9135-06d0f5a9a5cc" ReplicaId="eeb23803-8f20-4d55-b85b-72c4f2270d8b" DataSourceId="d6c6c9af-8696-484a-b28c-079165d65742" />
          <AR29 PhysicalReplicaId="44c75c84-ef1f-4fde-9135-06d0f5a9a5cc" ReplicaId="1e35c55b-26d1-4faa-b691-96bae823fb81" DataSourceId="25856e9f-108a-494c-8a2c-a5d56ed0ad5f" />
          <AR30 PhysicalReplicaId="44c75c84-ef1f-4fde-9135-06d0f5a9a5cc" ReplicaId="2320dec9-a943-4179-8bb1-71a244cf3d12" DataSourceId="25515be1-25b2-49b7-8232-3661b4ff1994" />
          <AR31 PhysicalReplicaId="44c75c84-ef1f-4fde-9135-06d0f5a9a5cc" ReplicaId="0bcca623-6c60-4157-978d-673f7571db6a" DataSourceId="a7485ec6-f071-4c8f-acab-5eeb184a6be2" />
          <AR32 PhysicalReplicaId="44c75c84-ef1f-4fde-9135-06d0f5a9a5cc" ReplicaId="b28c2fbd-45e3-44ac-9d0f-ec753db57ef7" DataSourceId="60e2bf91-0298-49ce-bdc7-a3e71fa0e692" />
          <AR33 PhysicalReplicaId="44c75c84-ef1f-4fde-9135-06d0f5a9a5cc" ReplicaId="7ab15216-8760-4dee-97ac-0c876e9eb2f9" DataSourceId="f30929d5-ec37-439d-a159-e5c633b92095" />
          <AR34 PhysicalReplicaId="c57bcf4c-e1ad-4999-a7b4-ab116f371ab6" ReplicaId="c57bcf4c-e1ad-4999-a7b4-ab116f371ab6" DataSourceId="c03d5d11-057e-437b-958c-701710a55787" />
          <AR35 PhysicalReplicaId="cc0fe49c-977d-4bae-a5ba-887ddce0402d" ReplicaId="cc0fe49c-977d-4bae-a5ba-887ddce0402d" DataSourceId="fdfe4579-5a43-4b33-ad04-382a51cdfa51" />
          <AR36 PhysicalReplicaId="cd146c32-7d5b-4129-9531-ef0f1d2796c6" ReplicaId="cd146c32-7d5b-4129-9531-ef0f1d2796c6" DataSourceId="1c056053-b56c-431f-8963-4f3df1f31540" />
          <AR37 PhysicalReplicaId="c902f57b-261c-4f1e-ac73-949d8e6ca4ba" ReplicaId="c902f57b-261c-4f1e-ac73-949d8e6ca4ba" DataSourceId="1dc0cbe0-cc1a-464f-9962-35eeff882319" />
          <AR38 PhysicalReplicaId="ae8cd1ae-f4c1-4454-a766-5ea3dc5e577d" ReplicaId="02dcde4b-90ac-4d8b-a0ad-e5641a899750" DataSourceId="7cc72939-26ee-4dbf-ab76-0cebc83d5683" />
          <AR39 PhysicalReplicaId="75a11cc4-7be0-4166-a0aa-5a9ca501480a" ReplicaId="75a11cc4-7be0-4166-a0aa-5a9ca501480a" DataSourceId="0d9b38a6-c242-40fa-a2d8-f1ebd462e1dd" />
          <AR40 PhysicalReplicaId="f9102855-9adc-4ac9-afd4-4d01fcda2eb5" ReplicaId="f9102855-9adc-4ac9-afd4-4d01fcda2eb5" DataSourceId="82e666ac-397e-4126-b940-13e118e3991d" />
          <AR41 PhysicalReplicaId="9630eeec-c807-4fad-aa09-f74a5d196bb6" ReplicaId="9630eeec-c807-4fad-aa09-f74a5d196bb6" DataSourceId="264dc910-d85b-41e7-b717-06cd673bb3e5" />
          <AR42 PhysicalReplicaId="7f62ed5a-e823-4ff6-82e8-d930324355f2" ReplicaId="7f62ed5a-e823-4ff6-82e8-d930324355f2" DataSourceId="47c513af-8d1a-4d50-8e56-dfa16e3ed394" />
          <AR43 PhysicalReplicaId="282ca8c5-5567-4fd7-90ea-c98ecaf436d7" ReplicaId="282ca8c5-5567-4fd7-90ea-c98ecaf436d7" DataSourceId="b5c85a52-4658-4ce3-b6c0-89126b172e71" />
        </REPLICALIST>
        <LIBRARYLIST />
        <Groups Count="4">
          <PG0 GroupName="Active Directory PG" ScheduleOffset="0" PGPRotectionType="DiskToDisk" OnsiteFrequency="Daily" OffsiteFrequency="Daily" Performance="On-wire compression: Disabled | Consistency check: Automatic when replica becomes inconsistent. | Express Full Backup-4:00 AM Everyday" ReplicateBeforeShadowCopy="True" IsTapeShortTerm="False" IsTapeLongTerm="False" IsDiskShortTerm="True" IsTapeEnabled="False" AutoHealProperty="3" IsAutoCCenabled="True" IsAutoGrowenabled="True" IsClientDatasourcePresent="False" IsCloudLongterm="False" IsCloudProtectable="False" IsCollocated="False" IsPGCollocateable="False" RerunCancelledJobs="False" TotalDPMOnlineReplicaSize="0" TotalDiskReplicaSize="78213283840">
            <DISKINTENT Compression="False" Encryption="False" />
            <ARCHIVEINTENT />
            <RETENTIONPOLICY />
            <SHORTTERMPOLICY AllowIncrementals="False" IncrementalSet="False" Frequency="Daily" Interval="0" Mode="True">
              <RECOVERYRANGE Range="7" Unit="Days" />
              <SCHEDULES>
                <FullReplicationForApplication JobType="FullReplicationForApplication" JobTypeString="Express full" WeekDays="Su,Mo,Tu,We,Th,Fr,Sa" TimesOfDay="04:00" />
              </SCHEDULES>
            </SHORTTERMPOLICY>
            <LONGTERMPOLICY />
            <ONSITEGENERATOR Range="7" Unit="Days" />
            <OFFSITEGENERATOR />
            <ONSITERECOVERYRANGE Key="7" Value="Days" />
            <OFFSITERECOVERYRANGE Key="" Value="" />
            <PROTECTIONTOPTIONS ExcludeFileType="" RunEseUtilCC="True" ProtectionTopology="PT_CCR_PHYSICAL_NODE" PreferredServers="" EseUtiltype="" />
            <DATASOURCES Count="1">
              <DS0 Name="System Protection" Logicalpath="Computer\System Protection" ProtectionGroupName="Active Directory PG" ProductionServerName="dc01.ourdomain.com" ClusterName="" Type="System Protection" SupportsIncremental="False" NumberOfExcludedObjects="0" PhysicalReplicaId="ae8cd1ae-f4c1-4454-a766-5ea3dc5e577d" ReplicaSize="16106127360" RequiredReplicaSize="16106127360" ReplicaUsedSpace="9785835520" ShadowCopyAreaSize="62107156480" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="40683978752" IsCollocated="False" />
            </DATASOURCES>
          </PG0>
          <PG1 GroupName="Mailbox servers" ScheduleOffset="0" PGPRotectionType="DiskToDisk" OnsiteFrequency="Daily" OffsiteFrequency="Daily" Performance="On-wire compression: Disabled | Consistency check: 3:00 AM Everyday for 72 hours. | Consistency check: Automatic when replica becomes inconsistent. | Express Full Backup-8:00 PM Everyday" ReplicateBeforeShadowCopy="False" IsTapeShortTerm="False" IsTapeLongTerm="False" IsDiskShortTerm="True" IsTapeEnabled="False" AutoHealProperty="3" IsAutoCCenabled="True" IsAutoGrowenabled="True" IsClientDatasourcePresent="False" IsCloudLongterm="False" IsCloudProtectable="False" IsCollocated="False" IsPGCollocateable="False" RerunCancelledJobs="False" TotalDPMOnlineReplicaSize="0" TotalDiskReplicaSize="318305730560">
            <DISKINTENT Compression="False" Encryption="False" />
            <ARCHIVEINTENT />
            <RETENTIONPOLICY />
            <SHORTTERMPOLICY AllowIncrementals="True" IncrementalSet="True" Frequency="Daily" Interval="0" Mode="False">
              <RECOVERYRANGE Range="14" Unit="Days" />
              <SCHEDULES>
                <Replication JobType="Replication" JobTypeString="Synchronization" Frequency="60" />
                <FullReplicationForApplication JobType="FullReplicationForApplication" JobTypeString="Express full" WeekDays="Su,Mo,Tu,We,Th,Fr,Sa" TimesOfDay="20:00" />
                <DiskAutoValidation JobType="DiskAutoValidation" JobTypeString="Consistency check" StartTime="03:00 AM" MaxDuration="72" />
              </SCHEDULES>
            </SHORTTERMPOLICY>
            <LONGTERMPOLICY />
            <ONSITEGENERATOR Range="14" Unit="Days" />
            <OFFSITEGENERATOR />
            <ONSITERECOVERYRANGE Key="14" Value="Days" />
            <OFFSITERECOVERYRANGE Key="" Value="" />
            <PROTECTIONTOPTIONS ExcludeFileType="" RunEseUtilCC="True" ProtectionTopology="PT_CCR_PHYSICAL_NODE" PreferredServers="" EseUtiltype="" />
            <DATASOURCES Count="2">
              <DS0 Name="MBX-PDB01" Logicalpath="MBX-PDB01" ProtectionGroupName="Mailbox servers" ProductionServerName="MBX.ourdomain.com" ClusterName="" Type="Exchange Mailbox Database" SupportsIncremental="True" NumberOfExcludedObjects="0" PhysicalReplicaId="fae3e688-7eda-457e-976b-b55b6948cbac" ReplicaSize="1080033280" RequiredReplicaSize="1080033280" ReplicaUsedSpace="366821376" ShadowCopyAreaSize="214748364800" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="5449080832" IsCollocated="False" />
              <DS1 Name="MBX-DB01" Logicalpath="MBX-DB01" ProtectionGroupName="Mailbox servers" ProductionServerName="MBX.ourdomain.com" ClusterName="" Type="Exchange Mailbox Database" SupportsIncremental="True" NumberOfExcludedObjects="0" PhysicalReplicaId="bcfe0d4f-05ed-4fd0-a091-fa2931fdf740" ReplicaSize="33292288000" RequiredReplicaSize="33292288000" ReplicaUsedSpace="23005401088" ShadowCopyAreaSize="69185044480" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="53975531520" IsCollocated="False" />
            </DATASOURCES>
          </PG1>
          <PG2 GroupName="Public Folder servers" ScheduleOffset="0" PGPRotectionType="DiskToDisk" OnsiteFrequency="Daily" OffsiteFrequency="Daily" Performance="On-wire compression: Disabled | Consistency check: 12:00 AM Everyday for 72 hours. | Consistency check: Automatic when replica becomes inconsistent. | Express Full Backup-8:00 PM Everyday" ReplicateBeforeShadowCopy="False" IsTapeShortTerm="False" IsTapeLongTerm="False" IsDiskShortTerm="True" IsTapeEnabled="False" AutoHealProperty="3" IsAutoCCenabled="True" IsAutoGrowenabled="True" IsClientDatasourcePresent="False" IsCloudLongterm="False" IsCloudProtectable="False" IsCollocated="False" IsPGCollocateable="False" RerunCancelledJobs="False" TotalDPMOnlineReplicaSize="0" TotalDiskReplicaSize="7873337753600">
            <DISKINTENT Compression="False" Encryption="False" />
            <ARCHIVEINTENT />
            <RETENTIONPOLICY />
            <SHORTTERMPOLICY AllowIncrementals="True" IncrementalSet="True" Frequency="Daily" Interval="0" Mode="False">
              <RECOVERYRANGE Range="10" Unit="Days" />
              <SCHEDULES>
                <Replication JobType="Replication" JobTypeString="Synchronization" Frequency="60" />
                <FullReplicationForApplication JobType="FullReplicationForApplication" JobTypeString="Express full" WeekDays="Su,Mo,Tu,We,Th,Fr,Sa" TimesOfDay="20:00" />
                <DiskAutoValidation JobType="DiskAutoValidation" JobTypeString="Consistency check" StartTime="12:00 AM" MaxDuration="72" />
              </SCHEDULES>
            </SHORTTERMPOLICY>
            <LONGTERMPOLICY />
            <ONSITEGENERATOR Range="10" Unit="Days" />
            <OFFSITEGENERATOR />
            <ONSITERECOVERYRANGE Key="10" Value="Days" />
            <OFFSITERECOVERYRANGE Key="" Value="" />
            <PROTECTIONTOPTIONS ExcludeFileType="" RunEseUtilCC="True" ProtectionTopology="PT_CCR_PHYSICAL_NODE" PreferredServers="" EseUtiltype="" />
            <DATASOURCES Count="8">
              <DS0 Name="PF04-DB01" Logicalpath="PF04-DB01" ProtectionGroupName="Public Folder servers" ProductionServerName="PF04.ourdomain.com" ClusterName="" Type="Exchange Mailbox Database" SupportsIncremental="True" NumberOfExcludedObjects="0" PhysicalReplicaId="7194d5be-f7b4-4f14-b0b2-82cfbec29021" ReplicaSize="1080033280" RequiredReplicaSize="1080033280" ReplicaUsedSpace="331431936" ShadowCopyAreaSize="53687091200" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="3475292160" IsCollocated="False" />
              <DS1 Name="PF02-PDB01" Logicalpath="PF02-PDB01" ProtectionGroupName="Public Folder servers" ProductionServerName="PF02.ourdomain.com" ClusterName="" Type="Exchange Mailbox Database" SupportsIncremental="True" NumberOfExcludedObjects="0" PhysicalReplicaId="73a6903c-947a-4975-bc59-d83c2d583250" ReplicaSize="107374182400" RequiredReplicaSize="107374182400" ReplicaUsedSpace="18537394176" ShadowCopyAreaSize="1806035845120" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="11922919424" IsCollocated="False" />
              <DS2 Name="PF02-DB01" Logicalpath="PF02-DB01" ProtectionGroupName="Public Folder servers" ProductionServerName="PF02.ourdomain.com" ClusterName="" Type="Exchange Mailbox Database" SupportsIncremental="True" NumberOfExcludedObjects="0" PhysicalReplicaId="669858e4-2dbf-4ec4-92cc-42dd71f4f308" ReplicaSize="1080033280" RequiredReplicaSize="1080033280" ReplicaUsedSpace="306216960" ShadowCopyAreaSize="53687091200" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="3173908480" IsCollocated="False" />
              <DS3 Name="PF03-DB01" Logicalpath="PF03-DB01" ProtectionGroupName="Public Folder servers" ProductionServerName="PF03.ourdomain.com" ClusterName="" Type="Exchange Mailbox Database" SupportsIncremental="True" NumberOfExcludedObjects="0" PhysicalReplicaId="08f6e691-bdd1-44ce-93a6-254a66cf2057" ReplicaSize="1080033280" RequiredReplicaSize="1080033280" ReplicaUsedSpace="296566784" ShadowCopyAreaSize="53687091200" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="3198812160" IsCollocated="False" />
              <DS4 Name="PF03-PDB01" Logicalpath="PF03-PDB01" ProtectionGroupName="Public Folder servers" ProductionServerName="PF03.ourdomain.com" ClusterName="" Type="Exchange Mailbox Database" SupportsIncremental="True" NumberOfExcludedObjects="0" PhysicalReplicaId="e23e1787-c26f-44c0-9480-dc8de90ff972" ReplicaSize="107374182400" RequiredReplicaSize="107374182400" ReplicaUsedSpace="19096707072" ShadowCopyAreaSize="1806035845120" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="10451554304" IsCollocated="False" />
              <DS5 Name="PF04-PDB01" Logicalpath="PF04-PDB01" ProtectionGroupName="Public Folder servers" ProductionServerName="PF04.ourdomain.com" ClusterName="" Type="Exchange Mailbox Database" SupportsIncremental="True" NumberOfExcludedObjects="0" PhysicalReplicaId="29323511-9609-4d8a-b081-a44a7544c72a" ReplicaSize="107374182400" RequiredReplicaSize="107374182400" ReplicaUsedSpace="15496949760" ShadowCopyAreaSize="1806035845120" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="7758733312" IsCollocated="False" />
              <DS6 Name="PF01-DB01" Logicalpath="PF01-DB01" ProtectionGroupName="Public Folder servers" ProductionServerName="PF01.ourdomain.com" ClusterName="" Type="Exchange Mailbox Database" SupportsIncremental="True" NumberOfExcludedObjects="0" PhysicalReplicaId="38dedeba-2a50-4502-8e56-70cd97778799" ReplicaSize="1709178880" RequiredReplicaSize="1709178880" ReplicaUsedSpace="335380480" ShadowCopyAreaSize="53687091200" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="3197337600" IsCollocated="False" />
              <DS7 Name="PF01-PDB01" Logicalpath="PF01-PDB01" ProtectionGroupName="Public Folder servers" ProductionServerName="PF01.ourdomain.com" ClusterName="" Type="Exchange Mailbox Database" SupportsIncremental="True" NumberOfExcludedObjects="0" PhysicalReplicaId="372c47db-bb39-413e-9b33-dd4400611ae1" ReplicaSize="107374182400" RequiredReplicaSize="107374182400" ReplicaUsedSpace="20924403712" ShadowCopyAreaSize="1806035845120" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="12870995968" IsCollocated="False" />
            </DATASOURCES>
          </PG2>
          <PG3 GroupName="Utility servers" ScheduleOffset="0" PGPRotectionType="DiskToDisk" OnsiteFrequency="Daily" OffsiteFrequency="Daily" Performance="On-wire compression: Disabled | Consistency check: 8:00 PM Everyday for 72 hours. | Consistency check: Automatic when replica becomes inconsistent. | Express Full Backup-10:00 PM Everyday" ReplicateBeforeShadowCopy="False" IsTapeShortTerm="False" IsTapeLongTerm="False" IsDiskShortTerm="True" IsTapeEnabled="False" AutoHealProperty="3" IsAutoCCenabled="True" IsAutoGrowenabled="True" IsClientDatasourcePresent="False" IsCloudLongterm="False" IsCloudProtectable="False" IsCollocated="True" IsPGCollocateable="True" RerunCancelledJobs="False" TotalDPMOnlineReplicaSize="0" TotalDiskReplicaSize="28256627589120">
            <DISKINTENT Compression="False" Encryption="False" />
            <ARCHIVEINTENT />
            <RETENTIONPOLICY />
            <SHORTTERMPOLICY AllowIncrementals="True" IncrementalSet="True" Frequency="Daily" Interval="0" Mode="False">
              <RECOVERYRANGE Range="14" Unit="Days" />
              <SCHEDULES>
                <Replication JobType="Replication" JobTypeString="Synchronization" Frequency="60" />
                <FullReplicationForApplication JobType="FullReplicationForApplication" JobTypeString="Express full" WeekDays="Su,Mo,Tu,We,Th,Fr,Sa" TimesOfDay="22:00" />
                <DiskAutoValidation JobType="DiskAutoValidation" JobTypeString="Consistency check" StartTime="08:00 PM" MaxDuration="72" />
              </SCHEDULES>
            </SHORTTERMPOLICY>
            <LONGTERMPOLICY />
            <ONSITEGENERATOR Range="14" Unit="Days" />
            <OFFSITEGENERATOR />
            <ONSITERECOVERYRANGE Key="14" Value="Days" />
            <OFFSITERECOVERYRANGE Key="" Value="" />
            <PROTECTIONTOPTIONS ExcludeFileType="" RunEseUtilCC="True" ProtectionTopology="PT_CCR_PHYSICAL_NODE" PreferredServers="" EseUtiltype="" />
            <DATASOURCES Count="6">
              <DS0 Name="master" Logicalpath="SQL01\master" ProtectionGroupName="Utility servers" ProductionServerName="SQL01.ourdomain.com" ClusterName="" Type="SQL Server 2008 database" SupportsIncremental="False" NumberOfExcludedObjects="0" PhysicalReplicaId="44c75c84-ef1f-4fde-9135-06d0f5a9a5cc" ReplicaSize="10737418240" RequiredReplicaSize="10737418240" ReplicaUsedSpace="1599655936" ShadowCopyAreaSize="4698700513280" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="7274737664" IsCollocated="True" />
              <DS1 Name="BESMgmt" Logicalpath="SQL01\BESMgmt" ProtectionGroupName="Utility servers" ProductionServerName="SQL01.ourdomain.com" ClusterName="" Type="SQL Server 2008 database" SupportsIncremental="False" NumberOfExcludedObjects="0" PhysicalReplicaId="44c75c84-ef1f-4fde-9135-06d0f5a9a5cc" ReplicaSize="10737418240" RequiredReplicaSize="10737418240" ReplicaUsedSpace="1599655936" ShadowCopyAreaSize="4698700513280" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="7274737664" IsCollocated="True" />
              <DS2 Name="msdb" Logicalpath="SQL01\msdb" ProtectionGroupName="Utility servers" ProductionServerName="SQL01.ourdomain.com" ClusterName="" Type="SQL Server 2008 database" SupportsIncremental="False" NumberOfExcludedObjects="0" PhysicalReplicaId="44c75c84-ef1f-4fde-9135-06d0f5a9a5cc" ReplicaSize="10737418240" RequiredReplicaSize="10737418240" ReplicaUsedSpace="1599655936" ShadowCopyAreaSize="4698700513280" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="7274737664" IsCollocated="True" />
              <DS3 Name="BMSStore" Logicalpath="SQL01\BMSStore" ProtectionGroupName="Utility servers" ProductionServerName="SQL01.ourdomain.com" ClusterName="" Type="SQL Server 2008 database" SupportsIncremental="False" NumberOfExcludedObjects="0" PhysicalReplicaId="44c75c84-ef1f-4fde-9135-06d0f5a9a5cc" ReplicaSize="10737418240" RequiredReplicaSize="10737418240" ReplicaUsedSpace="1599655936" ShadowCopyAreaSize="4698700513280" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="7274737664" IsCollocated="True" />
              <DS4 Name="model" Logicalpath="SQL01\model" ProtectionGroupName="Utility servers" ProductionServerName="SQL01.ourdomain.com" ClusterName="" Type="SQL Server 2008 database" SupportsIncremental="True" NumberOfExcludedObjects="0" PhysicalReplicaId="44c75c84-ef1f-4fde-9135-06d0f5a9a5cc" ReplicaSize="10737418240" RequiredReplicaSize="10737418240" ReplicaUsedSpace="1599655936" ShadowCopyAreaSize="4698700513280" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="7274737664" IsCollocated="True" />
              <DS5 Name="BESXDB" Logicalpath="SQL01\BESXDB" ProtectionGroupName="Utility servers" ProductionServerName="SQL01.ourdomain.com" ClusterName="" Type="SQL Server 2008 database" SupportsIncremental="False" NumberOfExcludedObjects="0" PhysicalReplicaId="44c75c84-ef1f-4fde-9135-06d0f5a9a5cc" ReplicaSize="10737418240" RequiredReplicaSize="10737418240" ReplicaUsedSpace="1599655936" ShadowCopyAreaSize="4698700513280" RequiredShadowCopyAreaSize="" ShadowCopyUsedSpace="7274737664" IsCollocated="True" />
            </DATASOURCES>
          </PG3>
        </Groups>
      </backup01>
    </DPMConfig>
    

    Tuesday, May 15, 2012 3:08 PM