有人知道为什么Invoke-Parallel不是多线程吗?当我运行这个循环时,它不会启动下一个scriptblock,直到上一个脚本结束。
注意,我也在PoshRSJob上尝试过这一点。
我为找到的每个文件运行一个Java jar文件。如果你看起来here,他们正在使用启动进程命令,并等待rar.exe。
. .\Invoke-Parallel.ps1
$ScriptBlock = {
start-Process -file java -ArgumentList @('-jar',"a:\conversion.jar",$_.FullName,"$($_.FullName).tmp") -Wait
}
ForEach ($file in (GCI -Path b:\*)) {
Invoke-Parallel -InputObject $file -ScriptBlock $ScriptBlock -Throttle 5
}*请注意,这只是一个简单的示例,我的原始脚本更复杂,但我将其范围缩小到以下条目,这导致多线程不是多线程。
发布于 2019-11-29 22:50:24
这些多线程工具(Invoke-Parallel和PoshRSJob)需要流水线
我没有流水线我的原始代码,因为我认为它使用循环更干净。但是使用管道是可行的。
. .\Invoke-Parallel.ps1
$ScriptBlock = {
start-Process -file java -ArgumentList @('-jar',"a:\conversion.jar",$_.FullName,"$($_.FullName).tmp") -Wait
}
(GCI -Path b:\*) | Invoke-Parallel -InputObject $_ -ScriptBlock $ScriptBlock -Throttle 5https://stackoverflow.com/questions/58311876
复制相似问题