(少なくとも私にとっては)上記のどれも私のSQLExpressインスタンスを返さなかったことがわかりました。 5つの名前付きインスタンス、4つのフルファットSQL Server、1つのSQLExpressがあります。上記の回答には4つのフルファットが含まれていますが、SQLExpressは含まれていません。それで、私はインターネットを少し掘り下げて、この記事 James Kehrによるもので、マシン上のすべてのSQLServerインスタンスに関する情報が一覧表示されます。このコードを、以下の関数を作成するための基礎として使用しました。
# 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
}