我是一个新手编程。我需要编写如下的脚本。
# { ---A ---}
# define N task object, N is dynamically generated
$task1 = {commandA $p1}
...
$taskN = {commandA $pN}
# { ---B ---}
# if there is N task, it will have N jobs
$job1 = Start-Job -ScriptBlock $task1
...
$jobN = Start-Job -ScriptBlock $taskN
# { ---C ---}
# Feed those N job to wait-job
$null = Wait-Job -Job $job1,$job2,...,$jobN
# { ---D ---}
$result1 = Receive-Job -Job $job1
...
$result15 = Receive-Job -Job $jobN
# { ---E ---}
Remove-Job -Job $job1,$job2,...,$jobN
最初我打算用一个循环写一节" A,B和D"因为我不想复制和粘贴N次。但是,如果我使用循环,我不知道如何在C和E节中提供这些对象,因为N是动态生成的。如果你能提供一些提示,那就太好了。
答案 0 :(得分:0)
我同意@Swonkie,如果您描述了您尝试解决的实际问题,而不是描述您认为的解决方案,那么您将获得更好的答案。
但是,要回答您的直接问题,您可以在列表中组织您的任务:
$tasks = @()
$tasks += {commandA $p1}
...
$tasks += {commandA $pN}
获得此列表后,您可以使用循环处理它以启动单个作业,并将其收集在另一个可用于进一步处理的列表中:
$jobs = $tasks | ForEach-Object {
Start-Job -ScriptBlock $_
}
Wait-Job -Job $jobs | Out-Null
$results = @()
$jobs | ForEach-Object {
$results += Receive-Job -Job $_
}
Remove-Job -Job $jobs