我在调用 SSIS 包的字符串数组中有多个命令。为了利用硬件,我想一次运行多个包,等到一个包完成后再添加另一个包。通过查看关于 SO 的其他类似问题,我认为这样的事情会起作用:
cls
$commands = @()
$commands += "notepad.exe"
$commands += "notepad.exe"
$commands += "notepad.exe"
$commands += "notepad.exe"
$commands += "notepad.exe"
$commands += "notepad.exe"
foreach ($instance in $commands)
{
$running = @(Get-Job | Where-Object { $_.JobStateInfo.State -eq 'Running' })
if ($running.Count -le 2)
{
Start-Process $instance
}
else
{
$running | Wait-Job
}
Get-Job | Receive-Job
}
这确实可以打开 6 个记事本,但它不会等待某个阈值 - 在本例中为 2。理想情况下,它应该等到我关闭其中一个记事本(即过程完成)。
以前有人会这样做吗?