Private/ScriptBlocks/ScriptBlock_TryCatchError.ps1
<# .DESCRIPTION This script block should be called in all Try Catch Finally statements within the Catch block. This will create a standard format for all errors making it easier to troubleshoot nested functions. .EXAMPLE & $ScriptBlock_TryCatchError -ErrorObject:($Error) .EXAMPLE Invoke-Command -ScriptBlock:($ScriptBlock_TryCatchError) -ArgumentList:($Error) -NoNewScope #> $ScriptBlock_TryCatchError = { Param( [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)]$ErrorObject , [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 1)][bool]$BreakInd = $false ) $CallStack = Get-PSCallStack [array]::Reverse($CallStack) Write-Debug ('Command: ' + ($CallStack.Command -join ' -> ')) Write-Debug ('Arguments: ' + ($CallStack.Arguments -join ' -> ')) Write-Debug ('Location: ' + ($CallStack.Location -join ' -> ')) # If it should be a terminating error If ($BreakInd) { Throw ($ErrorObject) Break } Else { Write-Error ($ErrorObject) } } |