启动过程何时执行?

时间:2018-01-05 19:06:26

标签: powershell sccm mdt

基本上我试图将退出代码从启动过程返回到脚本,以便在安装失败时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只是为了终止脚本并返回错误代码。

1 个答案:

答案 0 :(得分:1)

Start-Process将在您定义$proc时开始此过程,并且在您退出之前不会移至下一行,因为您已定义-Wait参数。

此行if ($proc.ExitCode -ne 0) {Exit $proc.ExitCode}不会导致代码再次运行。

您可以在计算机上测试此功能,方法是使用记事本等快速程序运行代码,并查看程序何时显示。

$a = start-process notepad.exe -wait -passthru
$a.exitcode