在运行脚本时是否有办法在显示错误说明时仅获取错误消息?
我有一个运行的脚本,当发生错误时,我会在不同的时间收到错误消息,例如,如果我没有将参数传递给我写的函数,我会得到:
No Setup Location specified (i.e. \\server\share\folder)
At \\server\share\folder\script.ps1:9 char:31
+ [string] $setupHome = $(throw <<<< "No Setup Location specified (i.e. \\server\share\folder)")
+ CategoryInfo : OperationStopped: (No Setup Locati...ojects\something):String) [], RuntimeException
+ FullyQualifiedErrorId : No Setup Location specified (i.e. \\server\share\folder)
这很好,但我想要的是能够设置一个首选项(如ErrorAction),它只显示错误信息,而不是所有额外的goo,它很好,但是很杂乱我的控制台。因此,除了上述内容之外,我还想看到第一行:
No Setup Location specified (i.e. \\server\share\folder)
答案 0 :(得分:5)
您可以将$ErrorView
设置为'CategoryView'
以获得更简洁的错误报告:
$ErrorView = 'CategoryView'
Get-Item foo
ObjectNotFound: (C:\foo:String) [Get-Item], ItemNotFoundException
默认值为'NormalView'
,提供更详细的输出:
$ErrorView = 'NormalView'
Get-Item foo
ObjectNotFound: (C:\foo:String) [Get-Item], ItemNotFoundException
Get-Item : Cannot find path 'C:\foo' because it does not exist.
At line:8 char:1
+ Get-Item foo
+ ~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\foo:String) [Get-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemCommand
答案 1 :(得分:1)
您可以使用trap
函数,将其放在脚本的开头,每次发生异常时都执行一些操作,类似
trap {
Write-Host $Error[0].PSMessageDetails
continue;
}
答案 2 :(得分:1)
将代码包含在try / catch块中,并在catch块中打印包含在$ error变量中的第一行$error.Exception