我正在尝试使用 invoke-Async 将SQL脚本部署到多个sql服务器。
调用异步代码为here。 该脚本使用invoke-sqlcmd2,其代码为here。
以下非sql-server-code有效。
$sb = [scriptblock] {param($system) gwmi win32_operatingsystem -ComputerName $system | select csname,caption}
$servers = 'Server1', 'Server2', 'Server3', 'Server4'
$rtn = Invoke-Async -Set $servers -SetParam system -ScriptBlock $sb
$rtn
我稍微调整了一下代码(下面),以便为SQL服务器工作。不行。显然,我错过了一些东西。任何帮助都非常感谢。谢谢。
$sb = [scriptblock] {param($system) Invoke-SQLCmd2 -ServerInstance $system -ServerInstance 'select name from sys.databases' }
$servers = 'Server1', 'Server2', 'Server3', 'Server4'
$rtn = Invoke-Async -Set $servers -SetParam system -ScriptBlock $sb
$rtn
答案 0 :(得分:1)
这很简单。因为你要返回行。只需使用invoke-sqlcmd .. 在使用invoke-sqlcmd2 -As DataTable时,不确定invoke-Async是否会返回表。
$sb = [scriptblock] {param($system) Invoke-Sqlcmd -ServerInstance $system -query 'select name from sys.databases' }
$servers = 'Server1', 'Server2', 'Server3'
$rtn = Invoke-Async -Set $servers -SetParam system -ScriptBlock $sb -Verbose
$rtn