如何设置powershell脚本以仅显示简短的错误说明

时间:2015-04-22 12:45:01

标签: powershell

在运行脚本时是否有办法在显示错误说明时仅获取错误消息?

我有一个运行的脚本,当发生错误时,我会在不同的时间收到错误消息,例如,如果我没有将参数传递给我写的函数,我会得到:

    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)

3 个答案:

答案 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