How can I get powershell exception descriptions into a string?
If you want a bit shorter message (more user friendly sometimes?) than @tomasr suggests this will do:
$error[0].ToString() + $error[0].InvocationInfo.PositionMessage
You will get something like:
Cannot find path 'C:\TEMP\_100804_135716\missing' because it does not exist.At C:\TEMP\_100804_135716\test.ps1:5 char:15+ Get-ChildItem <<<< missing
This technical info will be excluded:
+ CategoryInfo : ObjectNotFound: (C:\TEMP\_100804_135716\missing:String) [Get-ChildItem], ItemNotFoundException+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
I took it a bit further because I didn't like the multilines from $error[0].InvocationInfo.PositionMessage.
Function FriendlyErrorString ($thisError) { [string] $Return = $thisError.Exception $Return += "`r`n" $Return += "At line:" + $thisError.InvocationInfo.ScriptLineNumber $Return += " char:" + $thisError.InvocationInfo.OffsetInLine $Return += " For: " + $thisError.InvocationInfo.Line Return $Return}[string] $ErrorString = FriendlyErrorString $Error[0]$ErrorString
You can look at what else is availible to construct your own String via:
$Error | Get-Member$Error[0].InvocationInfo | Get-Member