Private/Restore-KadenManagedFile.ps1

function Restore-KadenManagedFile {
    <#
    .SYNOPSIS
        Copy recorded backups onto managed paths after a failed apply or a Restore.
    #>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true)]
        [string]$ChildRoot,

        [Parameter(Mandatory = $true)]
        $Operations
    )

    $reversible = @($Operations | Where-Object {
            $_.replacementStatus -eq 'complete' -or $_.replacementStatus -eq 'intent-recorded'
        })
    for ($i = $reversible.Count - 1; $i -ge 0; $i--) {
        $op = $reversible[$i]
        $destPath = Resolve-KadenContainedPath -Root $ChildRoot -RelativePath ([string]$op.destination)
        if ($op.backupPath -and (Test-Path -LiteralPath ([string]$op.backupPath))) {
            $destDir = Split-Path -Parent $destPath
            if (-not (Test-Path -LiteralPath $destDir)) {
                New-Item -ItemType Directory -Path $destDir -Force | Out-Null
            }
            Copy-Item -LiteralPath ([string]$op.backupPath) -Destination $destPath -Force
        }
        elseif (Test-Path -LiteralPath $destPath) {
            Remove-Item -LiteralPath $destPath -Force
        }
    }
}