如果我正确理解您的问题,是的,在工作流中启动 powershell 进程和运行内置 powershell(模拟)命令之间似乎存在差异。它似乎将任务管理器中的进程计数限制为 5。也许您可以使用正在运行的内容更新您的示例。也许您更喜欢工作或启动过程。
workflow work { foreach -parallel ($i in 1..10) { powershell "sleep 10; echo done $i" } }
measure-command { work } | fl seconds
Seconds : 35
workflow work { foreach -parallel ($i in 1..10) { sleep 10; echo done $i } }
measure-command { work } | fl seconds
Seconds : 14
编辑:
嗯,可以的。它有点涉及。您必须是管理员,并且必须启用 psremoting。虽然我看到更多的进程在运行,但实际上完成的时间更长。
# all default to 5
$wfopt = New-PSWorkflowExecutionOption -MaxSessionsPerWorkflow 20 -MaxSessionsPerRemoteNode 20 -MaxActivityProcesses 20
Register-PSSessionConfiguration -Name myworkflow -SessionTypeOption $wfopt -SessionType Workflow -Force
work -PSConfigurationName myworkflow
您可以使用 Set-PSSessionConfiguration 对其进行修改,使用 Get-PSSessionConfiguration 对其进行检查,并使用 UnRegister-PSSessionConfiguration 将其删除。
您也可以修改默认配置 Microsoft.PowerShell.Workflow,但更改是永久性的。