Saya menemukan bahwa (setidaknya bagi saya) tidak ada di atas yang mengembalikan instance SQL Express saya. Saya memiliki 5 contoh bernama, 4 SQL Server penuh lemak, 1 SQL Express. 4 penuh lemak termasuk dalam jawaban di atas, SQL Express tidak. JADI, saya melakukan sedikit penggalian di internet dan menemukan artikel ini oleh James Kehr, yang mencantumkan informasi tentang semua instance SQL Server pada mesin. Saya menggunakan kode ini sebagai dasar untuk menulis fungsi di bawah ini.
# 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
}