PowerShell - перечислить все экземпляры SQL в моей системе? - PullRequest
10 голосов
/ 22 сентября 2011

Существует ли команда Powershell для отображения всех экземпляров SQL в моей системе?(MS SQL 2008)

Ответы [ 6 ]

20 голосов
/ 23 сентября 2011

Еще один способ сделать это ... может быть немного быстрее, чем SQLPS, чтобы получить быстрый ответ.


(get-itemproperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances
4 голосов
/ 07 января 2013

Я обнаружил, что (по крайней мере для меня) ничего из вышеперечисленного не вернуло мой экземпляр SQL Express. У меня есть 5 именованных экземпляров, 4 полнофункциональных SQL Server, 1 SQL Express. 4 полных жира включены в ответы выше, SQL Express - нет. Итак, я немного покопался в интернете и наткнулся на эту статью Джеймса Кера, в которой приводится информация обо всех экземплярах 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
}
4 голосов
/ 22 сентября 2011

Импорт серверных расширений powershell sql:

 Import-Module SqlServer 

Затем выполните эти команды

Set-Location SQLSERVER:\SQL\localhost
Get-ChildItem
3 голосов
/ 23 сентября 2011
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement") | out-null
$mach = '.'
$m = New-Object ('Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer') $mach
$m.ServerInstances
2 голосов
/ 22 сентября 2011
$a = "MyComputerName"

 [System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources() | ? { $_.servername -eq $a}

Метод Аарона возвращает более верный ответ.Прочитайте Здесь об Instance.GetDataSources ()

1 голос
/ 24 ноября 2016

Пространство имен System.Data.Sql содержит классы, которые поддерживают функции, специфичные для SQL Server.

Используя пространство имен System.Data.Sql, вы можете получить все экземпляры MSSQL на компьютере, используя этокоманда в оболочке Windows Power: [System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...