【发布时间】:2019-10-28 21:35:49
【问题描述】:
我正在尝试并行运行两个Invoke-Sqlcmd,然后等待所有结果。
$server1 = '...'
$server2 = '...'
workflow work {
parallel {
$r1 = Invoke-Sqlcmd -ServerInstance $server1 'select 1 a'
$r2 = Invoke-Sqlcmd -ServerInstance $server2 'select 2 a'
}
}
work
# do something with $r1 and $r2. How to access the variables here?
- 如何将
$server1和$server2传递给代码块? - 如何从并行块中获取
$r1和$r2?
【问题讨论】:
-
鉴于工作流已经过时(PowerShell Core 不再支持它们),我建议查看
Start-ThreadJob- 请参阅this answer。 -
您可以使用
param ()传入服务器。除了$result = work $server1 $server2,不知道如何获得结果。也许工作更容易。 -
@mklement0,我试过 ThreadJob。但它不适用于 Invoke-SqlCmd stackoverflow.com/questions/58609740/…
-
有趣,@ca9163d9:我认为问题是
Invoke-SqlCmd中的一个错误,如我对您的链接问题的评论中所述。您可以使用常规的基于子进程的后台作业 (Start-Job) 解决此问题,但请注意,它们比线程作业的开销要多得多 - 但是对于长时间运行的 SQL 查询来说并不重要。跨度>
标签: powershell powershell-workflow