как написать сценарий powershell для отображения доступных баз данных с нескольких серверов?

Требование: Мое требование: я должен указать доступные базы данных из 150 серверов. Каждый сервер имеет минимум 1 и максимум 15 экземпляров.

Ниже сценария работает только для экземпляров, перечисленных в файле sqlserver.txt, но мне нужно получить несколько экземпляров на нескольких серверах.

Помощь очень приветствуется.

ForEach ($instance in Get-Content "C:\PowerSQL\SQL_Servers.txt") { Import-Module SQLPS -DisableNameChecking Invoke-SQLcmd -Server $instance -Database master 'select @@servername as InstanceName,name as DatabaseName,state_desc as DBStatus from sys.databases' | Format-Table } 

Вы можете использовать этот скрипт для поиска всех доступных экземпляров в своей сети и выполнения запроса:

 Import-Module SQLPS -DisableNameChecking $servers = [System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources() ForEach ($i in $servers) { $instance = $i.ServerName+"\"+$i.InstanceName Invoke-SQLcmd -Server $instance -Database master 'select @@servername as InstanceName,name as DatabaseName,state_desc as DBStatus from sys.databases' | Format-Table } 

Если вам нужно только имя сервера для передачи, используйте $instance = $i.ServerName . Часть кода была взята отсюда давным-давно.

РЕДАКТИРОВАТЬ

С записью в CSV-файле и ошибкой:

 Import-Module SQLPS -DisableNameChecking $servers = [System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources() $results = @() ForEach ($i in $servers) { $instance = $i.ServerName+"\"+$i.InstanceName try { $sqlres = Invoke-SQLcmd -Server $instance -Database master 'select @@servername as InstanceName,name as DatabaseName,state_desc as DBStatus from sys.databases' ForEach($st in $sqlres) { $instanceinfo = @{ InstanceName = $st.InstanceName DatabaseName = $st.DatabaseName DBStatus = $st.DBStatus } $results += New-Object PSObject -Property $instanceinfo } } catch { "error when running Invoke-SQLcmd "+$instance Write-Host($error) } } $results | export-csv -Path D:\sql_instances_info.csv -NoTypeInformation 

Я не уверен, в чем проблема. Вы можете поместить все серверы / экземпляры в файл txt и итерации:

 #array of addresses, this can be fetched from file $list = "localhost\SQL2014",".\SQL2014","(local)\SQL2014" #MyServer\MyInstance $list | ` % { Invoke-Sqlcmd -Server $_ -Database master 'select @@servername as InstanceName,name as DatabaseName,state_desc as DBStatus from sys.databases' } | ` Format-Table -AutoSize 

Если это удаленные серверы без интегрированной защиты, вам необходимо передать аргументы -UserName и -Password .

  • Как удалить символ NULL (0x00) из объекта в PowerShell
  • использование powershell для сравнения схемы базы данных TFS и SQL-сервера
  • Powershell запускает SQL-задание, задерживает, а затем запускает следующий
  • Поддержка Unicode для Invoke-Sqlcmd в PowerShell
  • Ошибка восстановления резервной копии базы данных в новой базе данных с помощью smo и powershell
  • SQL Server SMO, shoud Я вызываю обновление каждый раз, когда я что-то менял?
  • Показать сбой для SQL 2005 Job, выполняющего скрипт Powershell через подсказку CMD, сбой PS PS
  • Azure SQL Server set Разрешить доступ к Azure-сервисам в шаблоне ARM или PowerShell
  • Powershell возвращает отрицательный код выхода, пока результаты скрипта верны
  • Службы Team Visual Studio онлайн - запуск сценария sql
  • Excel.Application не работает в PowerShell с использованием SQL Job, но работает из командной строки
  • Interesting Posts

    Таблица обслуживания, представление данных с использованием записей записи в виде заголовков столбцов и извлечение только самого последнего обслуживания

    Как я выбираю каждую переменную в последовательности из строки?

    Каковы основные различия между NOT IN и <> ALL?

    Тайм-аут запроса SQL Server в зависимости от пункта Where

    Проверить возвращаемое значение из хранимой процедуры

    Выберите строки, используя in с параметром строки, разделенным запятыми

    Преобразование изображения в байты для хранения в базе данных

    Создание строк без цикла SQL

    как разделить значения, разделенные запятыми, и сохранить их в базе данных

    Как оптимизировать TSQL-запрос?

    Проверьте, существует ли соответствующая запись в течение 28 дней с текущей записи

    как получить доступ к серверу sql с страницы asp

    Альтернатива выполнению динамического sql

    Почему приложения бросают несколько ошибок «Операция недействительна из-за текущего состояния объекта»?

    Пакет SSIS показывает пустой экран в режиме разработки

    Давайте будем гением компьютера.