detail/Invoke-WithResource.ps1

Set-StrictMode -Version "Latest"


function Invoke-WithResource {
    [CmdletBinding()]
    param (
        [ScriptBlock]$InitBlock,
        [ScriptBlock]$CleanupBlock,
        [ScriptBlock]$BodyBlock
    )

    Invoke-Command -NoNewScope -ScriptBlock $InitBlock
    try {
        Invoke-Command -NoNewScope -ScriptBlock $BodyBlock
    }
    finally {
        Invoke-Command -NoNewScope -ScriptBlock $CleanupBlock
    }
}