
With this script, you will be able to get a status on your Microsoft SQL Server version and patch level. This script uses a csv table I have created and that contains the version and patch level for each SQL build version. The csv file is available here and have to copied in the current script location : sql_version_build
The versions listed in the csv file are the following:
- SQL Server 2016
- SQL Server 2014
- SQL Server 2012
- SQL Server 2008R2
- SQL Server 2008
- SQL Server 2005
$host_array = "SQLSRV01", "SQLSRV02", "SQLSRV03" function Get_SQL_info($computername){ $array_tmp = @() $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computername ) $regKey= $reg.OpenSubKey("SOFTWARE\\Microsoft\\Microsoft SQL Server\\Instance Names\\SQL",$true) $instancenames = $regkey.GetValueNames() $instancenames | % { $instance = $_ $regvalue = $regKey.GetValue($instance) $regKeyVersion = $reg.OpenSubKey("SOFTWARE\\Microsoft\\Microsoft SQL Server\\$regvalue\\MSSQLServer\\CurrentVersion",$true) $CurrentVersion = $regKeyVersion.GetValue("CurrentVersion") $instance_sql_info = $sql_build_info -match $CurrentVersion $sql_build = $instance_sql_info.build $sql_version = $instance_sql_info.version $sql_sp = $instance_sql_info.sp $sql_update = $instance_sql_info.update $Properties = @{server=$computername; instance=$instance; sql_build=$sql_build; sql_version=$sql_version; sql_sp=$sql_sp; sql_update=$sql_update} $Newobject = New-Object PSObject -Property $Properties $array_tmp += $newobject } return $array_tmp } $sql_build_info = import-csv -Delimiter ";" sql_version_build.csv $sql_array = @() $host_array | % { $sqlservername = $_ $sql_array += Get_SQL_info($sqlservername) } $sql_array
The script output is an array with the following properties :
- server
- instance
- sql_build
- sql_version
- sql_sp
- sql_update
Get the version and patch level on remote MS SQL Servers