当我在另一个工作流程的foreach -parallel中调用一个工作流程时,我得到奇怪且不一致的结果。这是一些示例代码:
workflow test-workflow1 {
Start-Sleep 2
"Stuff"
}
workflow test-workflow2 {
foreach -parallel ($thing in @(1, 2, 4, 4)) {
$rezult = test-workflow1
InlineScript {
write-host $($USING:rezult)
}
}
}
test-workflow2
将发生的情况是,它将以不同的间隔打印出Stuff
,中间有空白行。有时甚至根本不会打印Stuff
。以下是一些示例:
Stuff
Stuff Stuff Stuff
另一个:
Stuff
Stuff
Stuff Stuff
我可以猜想线程有什么问题,而且在长时间运行的工作流中,它某种程度上是异步的,并将一些PSDataCollection返回给$ rezult,但是我不明白为什么它不是同步的。还有其他一些奇怪的事情,例如,如果我返回一个对象,则会得到一个数组,并将所有元素都塞进一个元素,然后是一堆空元素。我以上面的示例为例,但实际上,当我使用Invoke-RestMethod时,这对我的影响最大,因为有时它返回速度很快,并且一切都很好,但是有时它很慢,并且会产生这种奇怪的行为。另外,将foreach上的-throttlelimit设置为1时,即使运行缓慢,也可以正常运行。
任何人都可以解释这里发生了什么或如何解决吗?