说明:我有一台运行不同版本的MS SQL服务器的窗口服务器,当我在Power Shell脚本下运行时,它显示在下面的结果中,但是我需要添加名称为SQL Server 2014,SQL Server的SQL Server版本2008年...
我正在PowerShell脚本下运行以获取详细信息
[System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources()
PowerShell脚本输出:
ServerName InstanceName IsClustered Version
---------- ------------ ----------- -------------
hostname1 No 11.0.3000.0
hostname2 RAMTEST No 11.0.3000.0
我需要再添加一列基于版本的SQL Server名称。请建议
答案 0 :(得分:0)
请参见下文。您可以根据需要添加其他两列。由于空值,我删除了它们。但是请随时检查NULL,并替换为您认为合适的任何值。我已经对其进行了测试,并且可以正常工作。
$ServerList = [System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources() | Select ServerName, IsClustered, Version, InstanceName
$ServerList | foreach {
$i = $i - 1
if ($_.Version -like "14.0.*" ) { $Versionresult ="SQL Server 2017" }
elseif ($_.Version -like "13.0.*" ) { $Versionresult ="SQL Server 2016" }
elseif ($_.Version -like "12.0.*" ) { $Versionresult ="SQL Server 2014" }
elseif ($_.Version -like "11.0.*" ) { $Versionresult ="SQL Server 2012" }
elseif ($_.Version -like "10.50.*") { $Versionresult ="SQL Server 2008 R2"}
elseif ($_.Version -like "10.00.*") { $Versionresult ="SQL Server 2008" }
elseif ($_.Version -like "9.00.*" ) { $Versionresult ="SQL Server 2005" }
elseif ($_.Version -like "8.00.*" ) { $Versionresult ="SQL Server 2000" }
$table = [PSCustomObject] @{"ServerName" = $_.ServerName ; "IsClustured" = $_.IsClustered ;"Version" = $Versionresult ;"InstanceName" = $_.InstanceName}
$table
}
Blockquote