处理 PowerShell 脚本中的命令提示符错误

Handle command prompt error within PowerShell script

我正在尝试 运行 一些命令提示符命令,例如 PowerShell 脚本中的 schtasks。我想知道在PowerShell中如何处理命令抛出的错误。

我试过了:

我无法 运行 这些命令并忽略或捕获 PowerShell 脚本的 try..catch 块中的异常。我知道有库,但我仅限于 PowerShell v2.0。

如果外部命令以错误终止,通常会设置一个 non-zero 退出代码,因此您可以检查 automatic variable $LASTEXITCODE 是否具有 non-zero 值:

& cmd /c 'schtasks /Query /TN xx'
if ($LASTEXITCODE -ne 0) {
  'an error occurred'
}

但是请注意,有些程序使用 non-zero 退出代码来获取 non-error 信息,(例如 robocopy,它使用 8 以下的退出代码来获取状态信息,或 choice,它使用退出代码来指示所选择的选项)。

可以通过在 CMD 中重定向错误输出流来抑制外部命令的错误消息:

& cmd /c 'schtasks /Query /TN xx 2>nul'

或在 PowerShell 中:

& cmd /c 'schtasks /Query /TN xx' 2> $null