Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 暂停脚本,直到同步命令结束_Powershell - Fatal编程技术网

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

我在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)
[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()应用于整个作业,或者以某种方式应用于所有进程,而不是单独应用这些进程。我进行了一次快速编辑,这样这些进程将并行运行,而快速编辑成功了。感谢您对此的快速响应!