我有一个小型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"
}
感谢任何帮助
答案 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 +"');"
}