Совершенно случайно возникла необходимость собрать данные по установленным 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
Ссылки по теме