Powershell 暂停脚本,直到同步命令结束
我在powershell脚本中创建了两个作业:Powershell 暂停脚本,直到同步命令结束,powershell,Powershell,我在powershell脚本中创建了两个作业: $job1= Start-Job { [Diagnostics.Process]::Start("service", $var1 $var2 $var3) [Diagnostics.Process]::Start("service", $var1 $var2 $var3) } $job2= Start-Job { [Diagnostics.Process]::Start("service", $var1 $var2 $var3) [Diagnos
$job1= Start-Job {
[Diagnostics.Process]::Start("service", $var1 $var2 $var3)
[Diagnostics.Process]::Start("service", $var1 $var2 $var3)
}
$job2= Start-Job {
[Diagnostics.Process]::Start("service", $var1 $var2 $var3)
[Diagnostics.Process]::Start("service", $var1 $var2 $var3)
}
我希望作业1中的流程在开始作业2之前完成。我尝试了等待作业、获取作业|等待作业,但当我运行接收作业时,它显示作业已完成。我假设它认为它完成后,作业已技术运行,即使2个新的cmd窗口打开,作业仍在运行
如何让powershell识别这些窗口仍处于打开/运行状态,以便在完成之前不会继续运行?将您的呼叫更改为
$p1 = [Diagnostics.Process]::Start("service", $var1 $var2 $var3)
$p2 = [Diagnostics.Process]::Start("service", $var1 $var2 $var3)
$p1.WaitForExit()
$p2.WaitForExit()
这将确保您的作业在开始完成之前不会被视为已完成。这样,您就可以在
$job1
上使用等待作业
等待,直到其中的进程完成。将呼叫更改为
$p1 = [Diagnostics.Process]::Start("service", $var1 $var2 $var3)
$p2 = [Diagnostics.Process]::Start("service", $var1 $var2 $var3)
$p1.WaitForExit()
$p2.WaitForExit()
这将确保您的作业在开始完成之前不会被视为已完成。有了它,您就可以在
$job1
上使用等待作业
等待,直到其中的进程完成。感谢DAX的回复。这部分完成了我需要它做的事情。是的,它阻止cmd窗口关闭并等待退出,但现在它不允许作业中的每个[Diagnostics.Process]并行运行。最好将.WaitforExit()应用于整个作业,或者以某种方式应用于所有进程,而不是单独应用这些进程。我进行了一次快速编辑,这样这些进程将并行运行,而快速编辑成功了。感谢您对此的快速响应!谢谢你的回复。这部分完成了我需要它做的事情。是的,它阻止cmd窗口关闭并等待退出,但现在它不允许作业中的每个[Diagnostics.Process]并行运行。最好将.WaitforExit()应用于整个作业,或者以某种方式应用于所有进程,而不是单独应用这些进程。我进行了一次快速编辑,这样这些进程将并行运行,而快速编辑成功了。感谢您对此的快速响应!