启动进程并仅等待父进程

as9*_*876 5 powershell process

我正在使用 PowerShell 语法:

Start-Process -FilePath $file -ArgumentList $argList -NoNewWindow -Wait
Run Code Online (Sandbox Code Playgroud)

正在启动的进程是一个安装程序,它安装 Windows 服务,然后启动该服务,然后该进程停止。发生的情况是我的脚本无限期挂起,即使在进程成功完成并且进程已退出之后(正如我在任务管理器中看到的那样。当我从命令行运行它时,没有 PowerShell,它在一分钟内完成)。显然,它仍在等待,因为有一个从原始进程生成的子进程。如何告诉 PowerShell 仅等待初始进程 ($file) 而不是任何子进程?

谢谢

as9*_*876 4

最后,我决定简单地以 .NETy 方式进行,尽管我更喜欢 Powershelly 方式。下面的代码是从/sf/answers/613344791/复制的:

$pinfo = New-Object System.Diagnostics.ProcessStartInfo
$pinfo.FileName = $file
$pinfo.UseShellExecute = $false
$pinfo.Arguments = $argList
$p = New-Object System.Diagnostics.Process
$p.StartInfo = $pinfo
$p.Start() | Out-Null
$p.WaitForExit()    
Write-Host "exit code: " + $p.ExitCode
Run Code Online (Sandbox Code Playgroud)

这种方式没有问题。