启动过程何时执行?
When does the start-process get executed?
基本上,我正在尝试 return 从启动进程到脚本的退出代码,这样 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}
对
$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
来终止脚本和 return 错误代码。
Start-Process
将在您定义 $proc
时启动该过程,并且不会移动到下一行直到它退出,因为您定义了 -Wait
参数。
这一行 if ($proc.ExitCode -ne 0) {Exit $proc.ExitCode}
不会导致代码再次 运行。
您可以在计算机上进行测试,方法是 运行使用记事本等快速程序编辑代码,然后查看程序何时出现。
$a = start-process notepad.exe -wait -passthru
$a.exitcode
基本上,我正在尝试 return 从启动进程到脚本的退出代码,这样 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}
对
$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
来终止脚本和 return 错误代码。
Start-Process
将在您定义 $proc
时启动该过程,并且不会移动到下一行直到它退出,因为您定义了 -Wait
参数。
这一行 if ($proc.ExitCode -ne 0) {Exit $proc.ExitCode}
不会导致代码再次 运行。
您可以在计算机上进行测试,方法是 运行使用记事本等快速程序编辑代码,然后查看程序何时出现。
$a = start-process notepad.exe -wait -passthru
$a.exitcode