J’ai adoré le code de Bartosz X ci-dessus, et à partir de cela, j’ai commencé à construire là-dessus et je me suis retrouvé avec un script que j’ai utilisé dans de nombreux correctifs et autres situations de dépannage.
C’est parce qu’un peu grand, mais le voici:
#-----------------------------------------------------------------------------------------------------
# Get-SQLInstancePorts
# Function to list SQL Server instances and their ports from the registry
# Marcello Miorelli
# 24-may-2024
#-----------------------------------------------------------------------------------------------------
function Get-SQLInstancePorts {
$instances = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances
$ports = @()
foreach ($instance in $instances)
if ($instance -eq "MSSQLSERVER")
$keyPath = "HKLM:\SOFTWARE\MICROSOFT\MSSQLServer\MSSQLServer\Supersocketnetlib\TCP"
else
$keyPath = "HKLM:\SOFTWARE\MICROSOFT\Microsoft SQL Server\$instance\MSSQLServer\Supersocketnetlib\TCP"
try Select-Object -ExpandProperty TcpPort -ErrorAction SilentlyContinue
$tcpDynamicPorts = Get-ItemProperty -Path $keyPath -Name TcpDynamicPorts -ErrorAction SilentlyContinue catch
Write-Host "Failed to retrieve port information for instance: $instance"
return $ports
}
#----------------------------------------------------------
# function Get-FullyQualifiedComputerName
# How do I get the localhost name in PowerShell?
#
# https://stackoverflow.com/a/78528603/1501497
# https://stackoverflow.com/a/72551767/1501497
#
# Marcello Miorelli
# 24-may-2024
#----------------------------------------------------------
function Get-FullyQualifiedComputerName
Add-Type -TypeDefinition @'
public enum COMPUTER_NAME_FORMAT
ComputerNameNetBIOS,
ComputerNameDnsHostname,
ComputerNameDnsDomain,
ComputerNameDnsFullyQualified,
ComputerNamePhysicalNetBIOS,
ComputerNamePhysicalDnsHostname,
ComputerNamePhysicalDnsDomain,
ComputerNamePhysicalDnsFullyQualified,
ComputerNameMax,
public static class Kernel32
[System.Runtime.InteropServices.DllImport("Kernel32.dll", SetLastError = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
public static extern bool GetComputerNameEx(COMPUTER_NAME_FORMAT NameType, System.Text.StringBuilder lpBuffer, ref uint lpnSize);
'@
# Function to list open SQL Server ports
function List-SQLServerPorts
$sqlProcesses = Get-Process
# Example usage
List-SQLServerPorts
Voici le résultat dans l’un de mes serveurs:




