PowerShell - 列出我系统上的所有SQL实例?

LaP*_*Phi 10 powershell sql-server-2008

是否有Powershell命令列出我系统上的所有SQL实例?(MS SQL 2008)

Sha*_*ton 20

只是另一种方式...可以比SQLPS快一点,以获得快速答案.


(get-itemproperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances
Run Code Online (Sandbox Code Playgroud)


Aar*_*and 6

导入 powershell sql server 扩展:

 Import-Module SqlServer 
Run Code Online (Sandbox Code Playgroud)

然后执行这些命令

Set-Location SQLSERVER:\SQL\localhost
Get-ChildItem
Run Code Online (Sandbox Code Playgroud)


Tec*_*pud 6

我发现(至少对我而言)以上都没有返回我的 SQL Express 实例。我有 5 个命名实例、4 个完整的 SQL Server、1 个 SQL Express。上面的答案中包含 4 个全脂,而 SQL Express 则没有。所以,我在互联网上做了一些挖掘,发现了 James Kehr 的这篇文章,其中列出了有关机器上所有 SQL Server 实例的信息。我使用这段代码作为编写下面函数的基础。

# 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
}
Run Code Online (Sandbox Code Playgroud)