Private/Invoke-ColorScriptError.ps1

function Invoke-ColorScriptError {
    param(
        [Parameter(Mandatory)]
        [string]$Message,

        [Parameter()]
        [string]$ErrorId = 'ColorScriptsEnhanced.RuntimeError',

        [Parameter()]
        [System.Management.Automation.ErrorCategory]$Category = [System.Management.Automation.ErrorCategory]::InvalidOperation,

        [Parameter()]
        [object]$TargetObject,

        [Parameter()]
        [System.Exception]$Exception,

        [Parameter()]
        [string]$RecommendedAction,

        [Parameter()]
        [System.Management.Automation.PSCmdlet]$Cmdlet
    )

    $errorRecord = New-ColorScriptErrorRecord -Message $Message -ErrorId $ErrorId -Category $Category -TargetObject $TargetObject -Exception $Exception -RecommendedAction $RecommendedAction

    if ($Cmdlet) {
        $Cmdlet.ThrowTerminatingError($errorRecord)
    }
    else {
        throw $errorRecord
    }
}