基本上我试图将退出代码从启动过程返回到脚本,以便在安装失败时MDT / SCCM可能会正确失败。
以下是我使用的代码:
$proc = Start-Process -FilePath $setupexe -ArgumentList $setupargs -Wait -Passthrough
Exit $proc.ExitCode
我的问题是Start-Process
什么时候被执行?当我定义$ proc或我打电话给$proc.ExitCode
时?
我尝试做的是使用if
语句中的退出代码,而不必将该代码存储在另一个变量中(减少代码混乱)。
$proc = Start-Process -FilePath $setupexe -ArgumentList $setupargs -Wait -PassThru
if ($proc.ExitCode -ne 0) {Exit $proc.ExitCode}
$proc2 = Start-Process -FilePath $setupexe2 -ArgumentList $setupargs2 -Wait -PassThru
if ($proc2.ExitCode -ne 0) {Exit $proc.ExitCode}
VS
$proc = Start-Process -FilePath $setupexe -ArgumentList $setupargs -Wait -PassThru
$procexit = $proc.ExitCode
if ($procexit -ne 0) {Exit $procexit}
$proc2 = Start-Process -FilePath $setupexe2 -ArgumentList $setupargs2 -Wait -PassThru
$procexit2 - $proc2.ExitCode
if ($procexit2 -ne 0) {Exit $procexit2}
我不希望再次调用Start-Process
只是为了终止脚本并返回错误代码。
答案 0 :(得分:1)
Start-Process
将在您定义$proc
时开始此过程,并且在您退出之前不会移至下一行,因为您已定义-Wait
参数。
此行if ($proc.ExitCode -ne 0) {Exit $proc.ExitCode}
不会导致代码再次运行。
您可以在计算机上测试此功能,方法是使用记事本等快速程序运行代码,并查看程序何时显示。
$a = start-process notepad.exe -wait -passthru
$a.exitcode