Posted On October 6, 2021

PowerShell: Detect Microsoft SQL Version and Installed Location

kimconnect 0 comments
blog.KimConnect.com >> Codes , Database >> PowerShell: Detect Microsoft SQL Version and Installed Location


function getSqlInfo{
    $results=@()
    $instances=(get-itemproperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances
    foreach ($i in $instances){
        $p=(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL').$i
        $instance=Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$p\Setup"
        $name=(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL').$i
        $edition=$instance.Edition
        $version=$instance.Version
        $label = switch ($version) {
                "14.0.3076.1" {"SQL Server 2017 CU14"; break}
                "14.0.3006.16" {"SQL Server 2017 CU1"; break}
                "14.0.2000.63" {"SQL Server 2017 RTM with Security Update KB4057122"; break} 
                "14.0.1000.169" {"SQL Server 2017 (vNext) RTM"; break}
                "13.0.1601.5" {"SQL Server 2016 RTM"; break}
                "12.0.5207.0" {"SQL Server 2014 SP2 with Security Update KB4019093"; break}
                "12.2.5000.0" {"SQL Server 2014 SP2"; break}
                default {"Unknown Version"; break}
            }
        $bootStrap=switch ($version.Substring(0,2)) {
        "14" {"C:\Program Files\Microsoft SQL Server\140\Setup Bootstrap\SQL2017"; break} 
        "13" {"C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\SQLServer2016"; break}
        "12" {"C:\Program Files\Microsoft SQL Server\120\Setup Bootstrap\SQLServer2014"; break}
        "11" {"C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\SQLServer2012"; break}
        default {"Unknown"; break}
        }
    $bin=switch ($version.Substring(0,2)) {
        "14" {"C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn"; break} 
        "13" {"C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn"; break}
        "12" {"C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn"; break}
        "11" {"C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn"; break}
        default {"Unknown"; break}
        }
        $backupDirectory=Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$name\MSSQLServer" -Name 'BackupDirectory'
        $dataDirectory=Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$name\Setup" -Name 'SQLDataRoot'
        $masterDataDirectory=Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$name\MSSQLServer\Parameters" -Name 'SQLArg0' | ForEach-Object {$_.Substring(2)}
        $masterLogDirectory=Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$name\MSSQLServer\Parameters" -Name 'SQLArg2' | ForEach-Object {$_.Substring(2)}
    $result=[pscustomobject]@{
        version=$version
        name=$name
        edition=$edition
        label=$label
        backupDirectory=$backupDirectory
        dataDirectory=$dataDirectory
        masterDataDirectory=$masterDataDirectory
        masterLogDirectory=$masterLogDirectory
        bin=$bin
        bootStrap=$bootStrap
        }
    $results+=$result
    }
    return $results
}
PS C:\Users\sqlAdmin> getSqlInfo

bin                 : C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn
bootStrap           : C:\Program Files\Microsoft SQL Server\140\Setup Bootstrap\SQL2017
version             : 14.0.1000.169
name                : MSSQL14.MSSQLSERVER
edition             : Standard Edition
label               : SQL Server 2017 (vNext) RTM
backupDirectory     : C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Backup
dataDirectory       : C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL
masterDataDirectory : C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\master.mdf
masterLogDirectory  : C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

How To Upgrade NextCloud 22.1.1 to 22.2.0 When Deployed with Kubernetes & Helm

Step 1: Navigate to nextcloud > html > edit version.php <?php $OC_Version = array(22,1,1,2); $OC_VersionString…

Linux: Bash Shell Script To Move/Archive Old Files

# create a script to move files (notice the regex escape for special chars) sudo…

PowerShell: Microsoft Clustered Disks Creation Script v 0.10

Code: <# Microsoft_Clustered_Disks_Creation_V0.10.ps1Purpose:This snippet streamlines the process of creating physical disk volumes on a Windows…
Other project: DragonCoin.com