Powershell尝试捕获

Nil*_*Pun 3 powershell

我有一个简单的PowerShell脚本,它下面基本上执行带有少量参数的abc.exe(控制台应用程序).

& abc.exe ar1 ar2
Run Code Online (Sandbox Code Playgroud)

abc.exe文件是.net所以它有自己的异常处理程序.

每当abc.exe抛出异常时,我希望Powershellscript捕获并记录/回显.

有人可以帮助我如何实现上述目标.

Osc*_*ley 6

没有.

abc.exe中的异常将冒泡到main方法,而不再是.但是你可以通过查看$ LASTEXITCODE来检查abc.exe的ERRORLEVEL .(检查一下)

你应该做什么:

  • 你的abc.exe,就像任何exe一样,如果一切正常,应返回errorlevel 0,如果出现错误则返回其他数字
  • 如果出现问题,Abc.exe main方法可能会写入错误消息.这样,当您从PowerShell脚本调用它时,您将在控制台中看到错误消息,稍后您的脚本将检查errorlevel.

此外,您还可以在abc.exe中为错误级别使用不同的exitcode,以向PowerShell脚本提供一些信息.例如,这些是7zip错误级别.

  • 0 - >没有错误
  • 1 - >警告
  • 2 - >致命错误
  • 7 - >命令行错误
  • 8 - >操作内存不足
  • 255 - >用户停止了该过程