使用PowerShell运行SQL查询,然后将结果插入表中

时间:2017-05-23 09:11:56

标签: sql-server powershell

我有一个小型PowerShell脚本,可以在大约30多个服务器上运行查询,这些服务器提取服务器名称以及安装了哪个版本的SQL Server。然后我想将这些数据插入到表中,但是无法弄清楚如何使用我的查询返回的返回数据集来做到这一点。到目前为止,这是我的代码

$SvrNameList = @( invoke-sqlcmd -serverinstance MyServer -Database MyDB -Query "SELECT ServerName FROM ServerNames WHERE [Enabled] = 1"  ) | select-object -expand ServerName


foreach ( $i in $SvrNameList )
{
   invoke-sqlcmd -ServerInstance $i -Query "SELECT @@ServerName AS ServerName, @@Version AS Version" 
} 

感谢任何帮助

1 个答案:

答案 0 :(得分:2)

首先,将实例名称和版本添加到哈希表中。填充后,您可以在结果表中插入。像这样,

$ht=@{} # Create empty hashtable
foreach ( $i in $SvrNameList ){
   $r = invoke-sqlcmd -ServerInstance $i -Query "SELECT s=@@ServerName, v=@@Version" # Query server names and versions 
   $ht.Add($r.s, $r.v) # Add name and version into hashtable
}

# Enumerate the hashtable and generate insert commands
$ht.GetEnumerator() | % {
    invoke-sqlcmd -ServerInstance foo -query "insert into t(s, v) values ('" + $_.value + "', '"+  $_.name +"');" 
}