Dell Appassure 5 User Guide
Have a look at the manual Dell Appassure 5 User Guide online for free. It’s possible to download the document as PDF or print. UserManuals.tech offer 327 Dell manuals and user’s guides for free. Share the user manual or guide on Facebook, Twitter or Google+.
Dell AppAssure User Guide Version 5.4.3 Revision B369 public AgentTransferConfiguration TransferConfiguration { get; set; } Gets or sets the transfer configuration. AgentTransferConfiguration is an object which will have the following data: • MaxConcurrentStreams. The maximum number of concurrent TCP connections the core will establish to the agent for transferring data • MaxTransferQueueDepth. The maximum number of block extents which can be queued up for writing • MaxConcurrentWrites. The maximum number of block write operations to have outstanding on an epoch at any given time. If additional blocks are received when this many block writes are outstanding, those additional blocks will be ignored until one of the outstanding blocks gets written. •MaxSegmentSize. The maximum number of contiguous blocks to transfer in a single request •Priority. An object which has the following data: •Undefined •One •Two •Three •Four •Five •Six •Seven •Eight •Nine •Ten •Highest (which is equal to One) •Lowest (which is equal to Ten) •Default (which is equal to Five) •MaxRetries. The maximum number of times a failed transfer should be retried before it is presumed failed • UseDefaultMaxRetries. A value indicating that the maximum number of retries is the default value • ProviderId. The GUID of the VSS provider to use for snapshots on this host. Administrators typically accept the default. Table 214. Objects for the TransferPostscript parameter Method Description
Dell AppAssure User Guide Version 5.4.3 Revision B370 public AgentTransferConfiguration TransferConfiguration { get; set; } (cont.)• ExcludedWriterIds. Collection of VSS writer IDs which should be excluded from this snapshot. The writer ID is keyed by the name of the writer. This name is for documentation purposes only and does not have to exactly match the actual name of the writer. • TransferDataServerPort. A value containing the TCP port upon which to accept connections from the core for the actual transfer of data from the agent to the core. •SnapshotTimeout. The amount of time to wait for a VSS snapshot operation to complete before giving up and timing out. •TransferTimeout. T h e a m o u nt o f t i m e t o w a it for further contact from the core before abandoning the snapshot. •NetworkReadTimeout. The timeout for network read operations related to this transfer. • NetworkWriteTimeout. The timeout for network write operations related to this transfer. • InitialQueueSize. A size of initial queue of requests. • MinVolumeFreeSpacePercents. A minimal amount of free space on a volume in percent. • MaxChangeLogsSizePercents. A maximum size of driver change logs as part of volume capacity measured in percent. • EnableVerification. A value indicating whether diagnostic verification of each block sent to Core should be performed. public AgentProtectionStorageConfiguration StorageConfiguration { get; set; } Gets or sets the storage configuration The AgentProtectionStorageConfiguration object contains the following data: •RepositoryId. The name of the repository where this agents recovery points will be stored •EncryptionKeyId. The ID of the encryption key for this agents recovery points. An empty string means no encryption public string Key { get; set; } The Key method generates a pseudorandom (but not cryptographically secure) key, which can be used as a one-time password to authenticate transfer requests. public bool ForceBaseImage { get; set; } Gets or sets the value indicating whether the transfer was a forced base image capture. public bool IsLogTruncation { get; set; } Gets or sets the value indicating whether logging is being truncated. Table 214. Objects for the TransferPostscript parameter Method Description
Dell AppAssure User Guide Version 5.4.3 Revision B371 VirtualMachineLocation (namespace Replay.Common.Contracts.Virtualization) The following table presents the available objects for the VirtualMachineLocation parameter. VolumeImageIdsCollection (namespace Replay.Core.Contracts.RecoveryPoints) Inherits its values from the parameter, System.Collections.ObjectModel.Collection. VolumeName (namespace Replay.Common.Contracts.Metadata.Storage) The following table presents the available objects for the VolumeName parameter.public uint LatestEpochSeenByCore { get; set; } Gets or sets latest epoch value. The LatestEpochSeenByCore method is the ordinal number of the most recent snapshot taken by the Core. This is the epoch number assigned by the filter driver to this particular snapshot at the moment it was taken with VSS. public Guid SnapshotSetId { get; set; } Gets or sets the GUID assigned by VSS to this snapshot. public VolumeSnapshotInfoDictionary VolumeSnapshots { get; set; }Gets or sets the collection of snapshot info for each volume included in the snap. Table 215. Objects for the VirtualMachineLocation parameter Method Description public string Description { get; set;} Gets or sets a human-readable description of this location. public string Method { get; set;} Gets or sets the name of the VM. Table 216. Objects for the VolumeName parameter Method Description public string GuidName { get; set;} Gets or sets the ID of the volume. public string DisplayName { get; set;} Gets or sets the name of the volume. public string UrlEncode() Gets a URL-encoded version of the name which can be passed cleanly on a URL. NOTE: A known issue exists in .NET 4.0 WCF (https://connect.microsoft.com/VisualStudio/feedb ack/ViewFeedback.aspx?FeedbackID=413312), which prevents path escape characters from working correctly in a URI template. Because a volume name contains both \ and ?, you must replace the special characters \ and ? with other special characters. public string GetMountName() Returns a name for this volume that is valid for mounting volume image to some folder. Table 214. Objects for the TransferPostscript parameter Method Description
Dell AppAssure User Guide Version 5.4.3 Revision B372 VolumeNameCollection (namespace Replay.Common.Contracts.Metadata.Storage) Inherits its values from the parameter, System.Collections.ObjectModel.Collection. The following table presents the available objects for the VolumeNameCollection parameter. VolumeSnapshotInfo (namesapce Replay.Common.Contracts.Transfer) The following table presents the available objects for the VolumeSnapshotInfo parameter. VolumeSnapshotInfoDictionary (namespace Replay.Common.Contracts.Transfer) Inherits its values from the parameter, System.Collections.Generic.Dictionary . Sample PowerShell scripts The following sample scripts are provided to assist administrative users in executing PowerShell scripts. The sample scripts include: •Pr eTra n sf er Scri pt. p s 1 •PostTransferScript.ps1 •Pr eE xpor tScr ip t. ps 1 •PostExportScript.ps1 •PreNightlyJobScript.ps1 •PostNightlyJobScript.ps1 Table 217. Objects for the VolumeNameCollection parameter Method Description public override bool Equals(object obj) Determines whether this instance and a specified object, which must also be a VolumeNameCollection object, have the same value. (Overrides Object.Equals(Object).) public override int GetHashCode() Returns the hash code for this VolumeNameCollection. (Overrides Object.GetHashCode().) Table 218. Objects for the VolumeSnapshotInfo parameter Method Description public Uri BlockHashesUri { get; set;} Gets or sets the URI at which the MD5 hashes of volume blocks can be read. public Uri BlockDataUri { get; set;} Gets or sets the URI at which the volume data blocks can be read.
Dell AppAssure User Guide Version 5.4.3 Revision B373 PreTransferScript.ps1 The PreTransferScript is run on the protected machine before transferring a snapshot. Sample PreTransferScript # receiving parameter from transfer job param([object]$TransferPrescriptParameter) # building path to Agents Common.Contracts.dll and loading this assembly $regLM = [Microsoft.Win32.Registry]::LocalMachine $regLM = $regLM.OpenSubKey(SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AppRecovery Agent 5) $regVal = $regLM.GetValue(InstallLocation) $regVal = $regVal + Common.Contracts.dll [System.Reflection.Assembly]::LoadFrom($regVal) | out-null # Converting input parameter into specific object $TransferPrescriptParameterObject = $TransferPrescriptParameter -as [Replay.Common.Contracts.PowerShellExecution.TransferPrescriptParameter]; # Working with input object. All echos are logged if($TransferPrescriptParameterObject -eq $null) { echo TransferPrescriptParameterObject parameter is null } else { echo TransferConfiguration:$TransferPrescriptParameterObject.TransferConfiguratio n echo StorageConfiguration: $TransferPrescriptParameterObject.StorageConfiguration }
Dell AppAssure User Guide Version 5.4.3 Revision B374 PostTransferScript.ps1 The PostTransferScript is run on the protected machine after transferring a snapshot. Sample PostTransferScript # receiving parameter from transfer job param([object] $TransferPostscriptParameter) # building path to Agents Common.Contracts.dll and loading this assembly $regLM = [Microsoft.Win32.Registry]::LocalMachine $regLM = $regLM.OpenSubKey(SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AppRecovery Agent 5) $regVal = $regLM.GetValue(InstallLocation) $regVal = $regVal + Common.Contracts.dll [System.Reflection.Assembly]::LoadFrom($regVal) | out-null # Converting input parameter into specific object $TransferPostscriptParameterObject = $TransferPostscriptParameter -as [Replay.Common.Contracts.PowerShellExecution.TransferPostscriptParameter]; # Working with input object. All echos are logged if($TransferPostscriptParameterObject -eq $null) { echo TransferPostscriptParameterObject parameter is null } else { echo VolumeNames: $TransferPostscriptParameterObject.VolumeNames echo ShadowCopyType: $TransferPostscriptParameterObject.ShadowCopyType echo ForceBaseImage: $TransferPostscriptParameterObject.ForceBaseImage echo IsLogTruncation: $TransferPostscriptParameterObject.IsLogTruncation }
Dell AppAssure User Guide Version 5.4.3 Revision B375 PreExportScript.ps1 The PreExportScript is run on the Core before any export job. Sample PreExportScript # receiving parameter from export job param([object]$ExportJobRequest) # building path to Cores Common.Contracts.dll and loading this assembly $regLM = [Microsoft.Win32.Registry]::LocalMachine $regLM = $regLM.OpenSubKey(SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AppRecovery Core 5) $regVal = $regLM.GetValue(InstallLocation) $regVal = $regVal + CoreService\Common.Contracts.dll [System.Reflection.Assembly]::LoadFrom($regVal) | out-null # Converting input parameter into specific object $ExportJobRequestObject = $ExportJobRequest -as [Replay.Core.Contracts.Export.ExportJobRequest] # Working with input object. All echos are logged if($ExportJobRequestObject -eq $null) { echo ExportJobRequestObject parameter is null } else { echo Location: $ExportJobRequestObject.Location echo Priority: $ExportJobRequestObject.StorageConfiguration } PostExportScript.ps1 The PostExportScript is run on the Core after any export job. Sample PostExportScript # receiving parameter from export job param([object]$ExportJobRequest) # building path to Cores Common.Contracts.dll and loading this assembly $regLM = [Microsoft.Win32.Registry]::LocalMachine $regLM = $regLM.OpenSubKey(SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AppRecovery Core 5) $regVal = $regLM.GetValue(InstallLocation) $regVal = $regVal + CoreService\Common.Contracts.dll [System.Reflection.Assembly]::LoadFrom($regVal) | out-null $regVal2 = $regLM.GetValue(InstallLocation) $regVal2 = $regVal2 + CoreService\Common.Contracts.dll # Converting input parameter into specific object $ExportJobRequestObject = $ExportJobRequest -as [Replay.Core.Contracts.Export.ExportJobRequest] NOTE: There are no input parameters for the PostExportScript when used to run once on the exported protected machine after initial startup. The regular protected machine should contain this script in the PowerShell script folder as PostExportScript.ps1.
Dell AppAssure User Guide Version 5.4.3 Revision B376 # Working with input object. All echos are logged if($ExportJobRequestObject -eq $null) { echo ExportJobRequestObject parameter is null } else { echo VolumeImageIds: $ExportJobRequestObject.VolumeImageIds echo RamInMegabytes: $ExportJobRequestObject.RamInMegabytes } PreNightlyJobScript.ps1 The PreNightlyJobScript is run before every nighty job on Core side. It contains the parameter $JobClassName, which helps to handle those child jobs separately. Sample PreNightlyJobScript # receiving parameters from Nightlyjob param([System.String]$JobClassMethod , [object]$NightlyAttachabilityJobRequest, [object]$RollupJobRequest, [object]$Agents, [object]$ChecksumCheckJobRequest, [object]$TransferJobRequest, [int]$LatestEpochSeenByCore) # building path to Cores Common.Contracts.dll and loading this assembly $regLM = [Microsoft.Win32.Registry]::LocalMachine $regLM = $regLM.OpenSubKey(SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AppRecovery Core 5) $regVal = $regLM.GetValue(InstallLocation) $regVal = $regVal + CoreService\Common.Contracts.dll [System.Reflection.Assembly]::LoadFrom($regVal) | out-null # Nightlyjob has four child jobs: NightlyAttachability Job, Rollup Job, Checksum Check Job and Log Truncation Job. All of them are triggering the script, and $JobClassMethod (contain job name that calls the script) helps to handle those child jobs separately switch ($JobClassMethod) { # working with NightlyAttachability Job NightlyAttachabilityJob { $NightlyAttachabilityJobRequestObject = $NightlyAttachabilityJobRequest -as [Replay.Core.Contracts.Sql.NightlyAttachabilityJobRequest]; echo Nightly Attachability job results:; if($NightlyAttachabilityJobRequestObject -eq $null) { echo NightlyAttachabilityJobRequestObject parameter is null; } else { echo AgentId: $NightlyAttachabilityJobRequestObject.AgentId; echo IsNightlyJob: $NightlyAttachabilityJobRequestObject.IsNightlyJob; } break; } # working with Rollup Job
Dell AppAssure User Guide Version 5.4.3 Revision B377 RollupJob { $RollupJobRequestObject = $RollupJobRequest -as [Replay.Core.Contracts.Rollup.RollupJobRequest]; echo Rollup job results:; if($RollupJobRequestObject -eq $null) { echo RollupJobRequestObject parameter is null; } else { echo SimultaneousJobsCount: $RollupJobRequestObject.SimultaneousJobsCount; echo AgentId: $RollupJobRequestObject.AgentId; echo IsNightlyJob: $RollupJobRequestObject.IsNightlyJob; } $AgentsCollection = $Agents -as System.Collections.Generic.List``1[System.Guid] if($AgentsCollection -eq $null) { echo AgentsCollection parameter is null; } else { echo Agents GUIDs: foreach ($a in $AgentsCollection) { echo $a } } break; } # working with Checksum Check Job ChecksumCheckJob { $ChecksumCheckJobRequestObject = $ChecksumCheckJobRequest -as [Replay.Core.Contracts.Exchange.ChecksumChecks.ChecksumCheckJobRequest]; echo Exchange checksumcheck job results:; if($ChecksumCheckJobRequestObject -eq $null) { echo ChecksumCheckJobRequestObject parameter is null; } else { echo RecoveryPointId: $ChecksumCheckJobRequestObject.RecoveryPointId; echo AgentId: $ChecksumCheckJobRequestObject.AgentId; echo IsNightlyJob: $ChecksumCheckJobRequestObject.IsNightlyJob; } break; }
Dell AppAssure User Guide Version 5.4.3 Revision B378 # working with Log Truncation Job TransferJob { $TransferJobRequestObject = $TransferJobRequest -as [Replay.Core.Contracts.Transfer.TransferJobRequest]; echo Transfer job results:; if($TransferJobRequestObject -eq $null) { echo TransferJobRequestObject parameter is null; } else { echo TransferConfiguration: $TransferJobRequestObject.TransferConfiguration; echo StorageConfiguration: $TransferJobRequestObject.StorageConfiguration; } echo LatestEpochSeenByCore: $LatestEpochSeenByCore; break; } } PostNightlyJobScript.ps1 The PostNightlyJobScript is run after every nighty job on the Core. It contains the parameter $JobClassName, which helps to handle those child jobs separately. Sample PostNightlyJobScript # receiving parameters from Nightlyjob param([System.String]$JobClassMethod , [object]$NightlyAttachabilityJobRequest, [object]$RollupJobRequest, [object]$Agents, [object]$ChecksumCheckJobRequest, [object]$TransferJobRequest, [int]$LatestEpochSeenByCore, [object]$TakeSnapshotResponse) # building path to Cores Common.Contracts.dll and loading this assembly $regLM = [Microsoft.Win32.Registry]::LocalMachine $regLM = $regLM.OpenSubKey(SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AppRecovery Core 5) $regVal = $regLM.GetValue(InstallLocation) $regVal = $regVal + CoreService\Common.Contracts.dll [System.Reflection.Assembly]::LoadFrom($regVal) | out-null $regVal2 = $regLM.GetValue(InstallLocation) $regVal2= $regVal2 + CoreService\Core.Contracts.dll [System.Reflection.Assembly]::LoadFrom($regVal2) | out-null # Nightlyjob has four child jobs: NightlyAttachability Job, Rollup Job, Checksum Check Job and Log Truncation Job. All of them are triggering the script, and $JobClassMethod (contain job name that calls the script) helps to handle those child jobs separately switch ($JobClassMethod) { # working with NightlyAttachability Job NightlyAttachabilityJob {