Postexportscript.ps1The PostExportScript is executed on the Core side after any export job.NOTE: There are no input parameters for the PostExportScript when used to execute once on theexported agent after initial startup. The regular agent contains this script in the PowerShell scriptfolder as PostExportScript.ps1.# receiving parameter from export jobparam([object]$ExportJobRequest)# building path to Core's 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]# Working with input object. All echo's are loggedif($ExportJobRequestObject -eq $null) {echo 'ExportJobRequestObject parameter is null'}else {echo 'VolumeImageIds:' $ExportJobRequestObject.VolumeImageIdsecho 'RamInMegabytes:' $ExportJobRequestObject.RamInMegabytes}Prenightlyjobscript.ps1The PreNightlyJobScript is executed before every nighty job on Core side. It has $JobClassNameparameter, that helps to handle those child jobs separately.# receiving parameters from Nightlyjobparam([System.String]$JobClassMethod , [object]$NightlyAttachabilityJobRequest,[object]$RollupJobRequest, [object]$Agents, [object]$ChecksumCheckJobRequest,[object]$TransferJobRequest, [int]$LatestEpochSeenByCore)# building path to Core's 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 thescript, and $JobClassMethod (contain job name that calls the script) helps tohandle those child jobs separately170