Private/Invoke-KadenRepairRestore.ps1
|
function Invoke-KadenRepairRestore { <# .SYNOPSIS Put managed files and version state back to the recorded prior transaction state. .DESCRIPTION Child-owned files that are not in the journal stay in place. Resume is not required, so a missing installed payload does not block restore. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$ChildRoot, [Parameter(Mandatory = $true)] $OpenJournal ) $journal = $OpenJournal.Journal if ($OpenJournal.Broken -or -not $journal) { throw 'KDN-TXN-REPAIR-REQUIRED: The interrupted journal cannot be read, so restore has no recorded prior state.' } $operations = @($journal.operations) if ($operations.Count -gt 0) { Restore-KadenManagedFile -ChildRoot $ChildRoot -Operations $operations } $version = $null $projectId = $null if ($journal.stateBefore) { if ($journal.stateBefore.managedContentVersion) { $version = [string]$journal.stateBefore.managedContentVersion } if ($journal.stateBefore.projectId) { $projectId = [string]$journal.stateBefore.projectId } } if ($version) { Write-KadenSharedState -ChildRoot $ChildRoot -ManagedContentVersion $version -ProjectId $projectId -InstallationStatus 'restored' } Complete-KadenOpenJournal -OpenJournal $OpenJournal -Operations $operations } |