为了在另一个作业完成而不阻塞当前会话时做一些工作,我想创建一个等待另一个作业的作业,但是当创建第二个作业时,它无法检测到第一个作业。
$Job = Start-Job -ScriptBlock { Start-Sleep -Seconds 30 }
Start-Job -ScriptBlock { param([int]$JobId) Wait-Job -Id $JobId; [Console]::Beep() } -ArgumentList $Job.Id
结果是
该命令找不到作业 ID 为 17 的作业。请验证 Id 参数的值,然后重试该命令。
似乎当您开始工作时,它会使用自己的工作 ID 获得自己的会话。作业可以启动子作业并可以等待这些作业。有没有办法让作业在父会话中等待作业(兄弟作业)?
我在about_Jobs或about_Job_Details文档中找不到任何相关信息。