Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

PowerShell - Alle SQL-Instanzen auf meinem System auflisten?

Ich habe festgestellt, dass (zumindest für mich) keine der oben genannten Methoden meine SQL Express-Instanz zurückgegeben hat. Ich habe 5 benannte Instanzen, 4 vollwertige SQL Server, 1 SQL Express. Die 4 Vollfette sind in den obigen Antworten enthalten, SQL Express nicht. Also, ich habe ein wenig im Internet gestöbert und bin auf dieser Artikel von James Kehr, das Informationen zu allen SQL Server-Instanzen auf einem Computer auflistet. Ich habe diesen Code als Grundlage für das Schreiben der folgenden Funktion verwendet.

# 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
}