Получение версии SQL сервера при помощи Powershell

Источник: wadmin

Совершенно случайно возникла необходимость собрать данные по установленным SQL серверам.

Через SCCM собрали то что поставлено, но вот получить редакции установленных серверов не получилось, после чтения документации нашлось следующее

SELECT  SERVERPROPERTY("productversion"), SERVERPROPERTY ("productlevel"), SERVERPROPERTY ("edition")

выполнять руками на всех серверах показалось как то "не спортивно"…

в результате некоторых мучений (минут 10) получился следующий код

function getData
{
  param (
    [string] $SQLSERVER
  )
 
  Write-Host -ForegroundColor "white" SQL Server: -NoNewline
  Write-Host -ForegroundColor "Red" $SQLSERVER
  $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
  $SqlConnection.ConnectionString = "Server=$SQLSERVER;Database=$Database;Integrated Security=True"
 
  $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
  $SqlCmd.Connection = $SqlConnection
  $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter

  $SqlCmd.CommandText = "SELECT SERVERPROPERTY("servername"), SERVERPROPERTY("productversion"), SERVERPROPERTY ("productlevel"), SERVERPROPERTY ("edition")"
  $SqlAdapter.SelectCommand = $SqlCmd
  $DataSet = New-Object System.Data.DataSet
  $SqlAdapter.Fill($DataSet)
  $content = $DataSet.Tables[0] / Format-Table -Auto / out-string
  return $content

  $SqlConnection.Close()
}

clear-host
$servers = get-content "servers.txt"
foreach ($server in $servers) {
  $result = getData $server
  Write-Host $result
  Add-Content -Path "result.txt" $result
}

Write-Host Done

соответственно ему скормили файл servers.txt и на выходе получили

Column1 Column2   Column3 Column4
------- -------   ------- -------
SQL01 8.00.2187 SP4     Enterprise Edition

Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=23185