Converting Error Records

by Apr 25, 2018

Whenever PowerShell raises an error, an error record is written to $error which is an array storing the last errors that occurred.

You can try and manually extract relevant error information from ErrorRecord objects, or you can use the function below:

function ConvertFrom-ErrorRecord
    [Parameter(Mandatory,ValueFromPipeline,ParameterSetName="ErrorRecord", Position=0)]
    [Parameter(Mandatory,ValueFromPipeline,ParameterSetName="Unknown", Position=0)]
    if ($PSCmdlet.ParameterSetName -eq 'ErrorRecord')
        Exception = $Record.Exception.Message
        Reason    = $Record.CategoryInfo.Reason
        Target    = $Record.CategoryInfo.TargetName
        Script    = $Record.InvocationInfo.ScriptName
        Line      = $Record.InvocationInfo.ScriptLineNumber
        Column    = $Record.InvocationInfo.OffsetInLine
      Write-Warning "$Alien"

The function uses two parameter sets, and valid ErrorRecord objects are automatically bound to $Record. If an object of different type is encountered that cannot be handled by this function, it is bound to $Alien.

To view detailed error information, try this:

PS> $error | ConvertFrom-ErrorRecord | Out-GridView

Twitter This Tip! ReTweet this Tip!