Tôi thấy rằng (ít nhất là đối với tôi) không có điều nào ở trên trả lại phiên bản SQL Express của tôi. Tôi có 5 phiên bản được đặt tên, 4 SQL Server đầy đủ chất béo, 1 SQL Express. 4 full-fat có trong các câu trả lời ở trên, SQL Express thì không. VẬY, tôi đã tìm hiểu kỹ trên internet và tìm thấy bài viết này của James Kehr, trong đó liệt kê thông tin về tất cả các phiên bản SQL Server trên một máy. Tôi đã sử dụng mã này làm cơ sở để viết hàm bên dưới.
# get all sql instances, defaults to local machine, '.'
Function Get-SqlInstances {
Param($ServerName = '.')
$localInstances = @()
[array]$captions = gwmi win32_service -computerName $ServerName | ?{$_.Name -match "mssql*" -and $_.PathName -match "sqlservr.exe"} | %{$_.Caption}
foreach ($caption in $captions) {
if ($caption -eq "MSSQLSERVER") {
$localInstances += "MSSQLSERVER"
} else {
$temp = $caption | %{$_.split(" ")[-1]} | %{$_.trimStart("(")} | %{$_.trimEnd(")")}
$localInstances += "$ServerName\$temp"
}
}
$localInstances
}