Invoke-Async在多个服务器上部署SQL脚本。

时间:2017-04-05 01:11:34

标签: powershell

我正在尝试使用 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

1 个答案:

答案 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