我想使用PoshRSJob模块中的FooTestTest
运行多个不同的脚本块。
我有以下代码:
Start-RSJob
这是可行的,但我有时会在工作中遇到错误(有时没有错误,有时会出现错误),就像执行$SB1 = {Write-Output "Hello from 1"}
$SB2 = {Write-Output "Hello from 2"}
$SB3 = {Write-Output "Hello from 3"}
$SB4 = {Write-Output "Hello from 4"}
$SBs = @($SB1, $SB2, $SB3, $SB4)
$SBs | Start-RSJob -ScriptBlock {
$PSBoundParameters.GetEnumerator() | ForEach {
. $_.Value
}
}
Get-RSJob | Wait-RSJob
的工作一样:
Stack empty. Hello from 3
从执行$SB3
的作业开始:
Stack empty. Hello from 4
从其他两个作业中,我得到了预期的输出:
Hello from 1 Hello from 2
我没有使用$SB4
来开始新工作,因为创建者是这样说的:
请注意,使用Start-RSJob时不使用ForEach。这需要 直接从管道输入以正常工作并充分利用 节流能力。
编辑:
因此,以下工作有效:
ForEach
但是我不知道为什么上一个没有。
答案 0 :(得分:0)
据我所知,您需要在ForEach-Object
调用中包含对RSJob cmdlet的调用。看来Start-RSJob
不能直接通过管道接受 。 Start-Job
cmdlet具有该限制。