Get-SqlEdition
02/20/2014 13:20<#
.SYNOPSIS
Collects each SQL Edition Type by Instance Name.
.DESCRIPTION
Enumerates the registry for installed instances of SQL, then foreach installed instance, it enumerates the Edition Type.
.EXAMPLE
Get-SqlEdition
.EXAMPLE
Get-SqlEdition -ComputerName MySQLServer.mydomain.org
.LINKS
https://gist.github.com/necromorph1024/9050441
#>
function Get-SqlEdition
{
[CmdletBinding()]
[OutputType([PSObject])]
param
(
[string]
$ComputerName=$env:COMPUTERNAME
)
if (-not(Test-Connection -ComputerName $ComputerName -Quiet -Count 2))
{
Write-Output "Failed to connect to $ComputerName. Please ensure the system is available."
}
$hive=[Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', "$ComputerName")
try
{
$regKeys=$hive.OpenSubKey("SOFTWARE\\Microsoft\\Microsoft SQL Server")
$resutls=@()
foreach ($instanceNames in $regKeys.OpenSubKey("Instance Names"))
{
foreach ($instance in $instanceNames.GetSubKeyNames())
{
$instanceName=$instanceNames.OpenSubKey($instance)
foreach ($name in $instanceName.GetValueNames())
{
foreach ($server in $regKeys.OpenSubKey($instanceName.GetValue($name)+"\\Setup"))
{
$output=New-Object PSobject
$output | Add-Member -NotePropertyName ComputerName -NotePropertyValue $ComputerName
$output | Add-Member -NotePropertyName InstanceName -NotePropertyValue $instanceName.GetValue($name)
$output | Add-Member -NotePropertyName EditionName -NotePropertyValue $server.GetValue("Edition")
$resutls+=$output
return $output
}
}
}
}
}
catch
{
Write-Output "SQL Server is not installed on $ComputerName"
}
}
———
Back