【发布时间】:2016-04-17 18:25:09
【问题描述】:
我正在尝试在 PowerShell 脚本中运行一些命令提示符命令,例如 schtasks。我想知道如何处理 PowerShell 中的命令引发的错误。
我试过了:
& cmd.exe /c 'schtasks /Query /TN xx || echo ERROR'& cmd.exe /c 'ping.exe 122.1.1.1 && exit 0 || exit 1'Invoke-Expression -Command:$command
我无法运行这些命令并在 PowerShell 脚本的 try..catch 块中忽略或捕获异常。我知道有库,但我仅限于 PowerShell v2.0。
【问题讨论】:
-
在每次调用
cmd.exe后检查$LASTEXITCODE- 非零值表示命令失败。通常你可以让命令本身报告它的退出代码,而不需要||子句。但是,如果您确实使用了一个,请确保它以exit 1结尾(或不同的非零退出代码);在您的第一个命令中,因为您在||子句中执行echo(作为唯一的命令),所以整个退出代码将错误地为0。 -
是的,但是如果命令抛出错误,powershell 脚本也会显示该错误,我想避免看到该错误消息。
-
要抑制命令的标准错误输出,请将
2>NUL直接附加到相关命令(在单引号内);例如'schtasks /Query /TN xx 2>NUL'。要同时抑制 stdout 输出,请添加>NUL。
标签: powershell cmd powershell-2.0