4

我是 powershell 的新手,并且使用我们的一个自定义 cmdlet 解决了问题。默认情况下,在 cmdlet 中引发的所有异常都具有最少的信息,没有堆栈跟踪,也没有关于链式异常的信息。有没有办法启用异常的详细输出?

4

3 回答 3

4

$error 集合包含当前会话中抛出的所有未处理异常的实时列表。最后一个例外是 $error[0]。做这样的事情以尽快捕获错误的一种好技术:

ps> invoke-something
error: ...
ps> $e = $error[0]

使用 get-member 探索 $e。

于 2011-05-10T01:24:35.830 回答
4

我已经使用这种技术来获取嵌套的错误对象:

$error[0]|format-list -force
于 2011-05-10T02:27:46.443 回答
3

这是我从网上某人那里偷来的一个简洁的功能:)。我在我的个人资料中有它,并且很乐意进一步传播它:

#Get detailed information on an error
function Resolve-Error ($ErrorRecord=$Error[0])
{
   $ErrorRecord | Format-List * -Force
   $ErrorRecord.InvocationInfo |Format-List *
   $Exception = $ErrorRecord.Exception
   for ($i = 0; $Exception; $i++, ($Exception = $Exception.InnerException))
   {   "$i" * 80
       $Exception |Format-List * -Force
   }
}
于 2011-05-10T07:16:13.893 回答