返回衍生的powershell.exe和cmd.exe shell的值

时间:2014-10-03 12:34:04

标签: windows powershell error-handling cmd salt-stack

这里的背景是我在Windows上使用SaltStack,因为它的Windows支持是不完整的,我必须让它运行很多批处理和PowerShell脚本或命令。

Salt是一个Python程序,因此它会生成powershell.exe和cmd.exe的实例,并向它们传递要运行的显式代码或文件路径。在最简单的模型中,Salt使用cmd.exe或powershell.exe进程的返回值来确定任务是成功还是失败。

我想知道的是,在每种情况下控制返回值的是什么?它只是shell执行的最后一个命令的退出代码,除非你用返回代码明确地调用“退出”吗?

我知道在Powershell中你有 $? $ lastexitcode ,它们有不同的用途。我想知道这是否使事情复杂化。 powershell.exe的返回代码是否会有所不同,具体取决于执行的最后一个命令是PowerShell函数还是Cmdlet,还是WIN32二进制文件?

脚本文件与显式命令的规则是否相同?

PowerShell -Command Write-Host "Foo"

VS。

PowerShell -File script.ps1

cmd /c echo foo

VS

cmd /c test.bat

也许这很简单,但我见过一些例子: -

  • cmd /c do_something & exit %ERRORLEVEL%
  • echo do_something; exit $lastexitcode | powershell -command -

我很想知道这个错误处理的正确性是什么。

0 个答案:

没有答案