Поддержка редактора PowerShell для Azure Data Studio

Это расширение обеспечивает полноценную поддержку редактора PowerShell в Azure Data Studio. С его помощью вы получаете возможность создания и отладки скриптов PowerShell в интерфейсе Azure Data Studio, схожем с интегрированной средой разработки.

Расширение PowerShell

Функции

  • Выделение синтаксиса
  • Фрагменты кода
  • Технология IntelliSense для командлетов и многое другое
  • Анализ на основе правил с использованием анализатора скриптов PowerShell
  • Переход к определению командлетов и переменных
  • Поиск ссылок на командлеты и переменные
  • Обнаружение символов в документе и рабочей области
  • Запуск выбранного фрагмента кода PowerShell с помощью клавиши F8
  • Запуск интерактивной справки для символа под курсором с помощью сочетания клавиш CTRL+F1
  • Базовая поддержка интерактивной консоли

Установка расширения

Чтобы установить официальный выпуск расширения PowerShell, выполните действия, указанные в документации по Azure Data Studio. В области "Расширения" найдите расширение PowerShell и установите его. Уведомления о последующих обновлениях этого расширения будут приходить автоматически.

Также вы можете установить пакет VSIX со страницы Выпуски и с помощью командной строки:

azuredatastudio --install-extension PowerShell-<version>.vsix

Поддержка платформы

  • ОС с Windows 7 по Windows 10 с Windows PowerShell версии 3 или более поздней и PowerShell Core
  • Linux с PowerShell Core (все поддерживаемые PowerShell дистрибутивы)
  • macOS с PowerShell Core

Ответы на часто задаваемые вопросы см. в этой статье.

Установка PowerShell Core

Если вы работаете с Azure Data Studio в MacOS или Linux, также может потребоваться установка PowerShell Core.

PowerShell Core — это проект с открытым исходным кодом на сайте GitHub. Дополнительные сведения об установке PowerShell Core на платформах MacOS или Linux см. в следующих статьях:

Примеры скриптов

Далее приводится несколько примеров скриптов в папке расширения examples, которые можно использовать для знакомства с возможностями редактирования и отладки PowerShell. Дополнительные сведения об их использовании см. в файле README.md.

Путь к этой папке:

$HOME/.azuredatastudio/extensions/microsoft.powershell-<version>/examples

или для предварительной версии расширения

$HOME/.azuredatastudio/extensions/microsoft.powershell-preview-<version>/examples

Чтобы открыть и просмотреть примеры расширения в Azure Data Studio, выполните следующий код из командной строки PowerShell:

azuredatastudio (Get-ChildItem $Home\.azuredatastudio\extensions\microsoft.powershell-*\examples)[-1]

Создание и открытие файлов

Чтобы создать и открыть новый файл в редакторе, выполните команду New-EditorFile из встроенного терминала PowerShell.

PS C:\temp> New-EditorFile ExportData.ps1

Эта команда работает для файлов любого типа, а не только для файлов PowerShell.

PS C:\temp> New-EditorFile ImportData.py

Чтобы открыть один или несколько файлов в Azure Data Studio, воспользуйтесь командой Open-EditorFile.

Open-EditorFile ExportData.ps1, ImportData.py

Отсутствие фокуса в консоли во время выполнения

Если вы работали с SSMS, то наверняка привыкли к возможности выполнить запрос и затем повторить его выполнение, не переключаясь обратно в панель запросов. В таком случае реализованное по умолчанию поведение редактора кода может показаться вам непривычным. Чтобы сохранять фокус в редакторе при выполнении с помощью клавиши F8, измените следующую настройку:

"powershell.integratedConsole.focusConsoleOnExecute": false

Значение по умолчанию true устанавливается в соответствии с требованиями к поддержке специальных возможностей.

Обратите внимание, что при установке этой настройки фокус не будет переноситься в консоль, даже если вы используете команду, явно требующую ввода данных, например Get-Credential.

Примеры SQL для PowerShell

Чтобы использовать приведенные ниже примеры, установите модуль SqlServer из коллекции PowerShell.

Install-Module -Name SqlServer

Примечание.

В версии 21.1.18102 и более поздних модуль SqlServer помимо Windows PowerShell поддерживает PowerShell Core 6.2 и более поздних версий.

В этом примере используется командлет Get-SqlInstance для получения управляющих объектов SQL Server для экземпляров ServerA и ServerB. По умолчанию в выходных данных этой команды будут содержаться имя экземпляра, версия, а также уровень пакета обновления и накопительного обновления для экземпляров.

Get-SqlInstance -ServerInstance ServerA, ServerB

Ниже приводится пример соответствующих выходных данных:

Instance Name             Version    ProductLevel UpdateLevel  HostPlatform HostDistribution
-------------             -------    ------------ -----------  ------------ ----------------
ServerA                   13.0.5233  SP2          CU4          Windows      Windows Server 2016 Datacenter
ServerB                   14.0.3045  RTM          CU12         Linux        Ubuntu

Модуль SqlServer содержит поставщик SQLRegistration, который обеспечивает программный доступ к следующим типам сохраненных подключений SQL Server:

  • Сервер ядра СУБД (зарегистрированные серверы)
  • Центральный сервер управления (CMS)
  • Службы Analysis Services
  • Службы Integration Services
  • Службы отчетов

В следующем примере выполняется команда dir (псевдоним Get-ChildItem) для получения списка всех экземпляров SQL Server, которые перечислены в файле зарегистрированных серверов.

dir 'SQLSERVER:\SQLRegistration\Database Engine Server Group' -Recurse

Ниже приводится пример выходных данных:

Mode Name
---- ----
-    ServerA
-    ServerB
-    localhost\SQL2017
-    localhost\SQL2016Happy
-    localhost\SQL2017

Для многих операций с базами данных или содержащимися в них объектами можно использовать командлет Get-SqlDatabase. Если заданы значения параметров -ServerInstance и -Database, будут извлечены только эти объекты базы данных. Тем не менее, если вы зададите только параметр -ServerInstance, будет возвращен полный список баз данных в этом экземпляре.

Ниже приводится пример соответствующих выходных данных:

Name                 Status           Size     Space  Recovery Compat. Owner
                                            Available  Model     Level
----                 ------           ---- ---------- -------- ------- -----
AdventureWorks2017   Normal      336.00 MB   57.01 MB Simple       140 sa
master               Normal        6.00 MB  368.00 KB Simple       140 sa
model                Normal       16.00 MB    5.53 MB Full         140 sa
msdb                 Normal       48.44 MB    1.70 MB Simple       140 sa
PBIRS                Normal      144.00 MB   55.95 MB Full         140 sa
PBIRSTempDB          Normal       16.00 MB    4.20 MB Simple       140 sa
SSISDB               Normal      325.06 MB   26.21 MB Full         140 sa
tempdb               Normal       72.00 MB   61.25 MB Simple       140 sa
WideWorldImporters   Normal         3.2 GB     2.6 GB Simple       130 sa

В следующем примере используется командлет Get-SqlDatabase для извлечения списка всех баз данных на экземпляре ServerB. После этого с помощью командлета Out-GridView выводится таблица для выбора баз данных, для которых требуется выполнить резервное копирование. После нажатия кнопки "ОК" будет выполнено резервное копирование только для выделенных баз данных.

Get-SqlDatabase -ServerInstance ServerB |
Out-GridView -PassThru |
Backup-SqlDatabase -CompressionOption On

В этом примере снова возвращается список всех экземпляров SQL Server, перечисленных в файле зарегистрированных серверов, после чего вызывается командлет Get-SqlAgentJobHistory, который выводит список всех завершившихся сбоем заданий агента SQL (начиная с полуночи) для каждого представленного в списке экземпляра SQL Server.

dir 'SQLSERVER:\SQLRegistration\Database Engine Server Group' -Recurse |
WHERE {$_.Mode -ne 'd' } |
FOREACH {
    Get-SqlAgentJobHistory -ServerInstance  $_.Name -Since Midnight -OutcomesType Failed
}

В этом примере выполняется команда dir (псевдоним Get-ChildItem) для получения списка всех экземпляров SQL Server, перечисленных в файле зарегистрированных серверов. Затем выполняется командлет Get-SqlDatabase для получения списка баз данных для каждого из этих экземпляров.

dir 'SQLSERVER:\SQLRegistration\Database Engine Server Group' -Recurse |
WHERE { $_.Mode -ne 'd' } |
FOREACH {
    Get-SqlDatabase -ServerInstance $_.Name
}

Ниже приводится пример соответствующих выходных данных:

Name                 Status           Size  Space     Recovery Compat. Owner
                                            Available Model    Level
----                 ------           ---- ---------- -------- ------- -----
AdventureWorks2017   Normal      336.00 MB   57.01 MB Simple       140 sa
master               Normal        6.00 MB  368.00 KB Simple       140 sa
model                Normal       16.00 MB    5.53 MB Full         140 sa
msdb                 Normal       48.44 MB    1.70 MB Simple       140 sa
PBIRS                Normal      144.00 MB   55.95 MB Full         140 sa
PBIRSTempDB          Normal       16.00 MB    4.20 MB Simple       140 sa
SSISDB               Normal      325.06 MB   26.21 MB Full         140 sa
tempdb               Normal       72.00 MB   61.25 MB Simple       140 sa
WideWorldImporters   Normal         3.2 GB     2.6 GB Simple       130 sa

Отчеты о проблемах

Если вы столкнулись с проблемами при работе расширения PowerShell, ознакомьтесь со сведениями о диагностике ошибок и отправке сообщений о них в документации по устранению неполадок.

Примечание по безопасности.

Сведения о проблемах, связанных с безопасностью, см. в этой статье.

Участие в улучшении кода

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

Издатели

Лицензия

Это расширение лицензируется на условиях лицензии MIT. Дополнительные сведения о двоичных файлах сторонних производителей, включаемых в выпуски этого проекта, см. в файле заметок стороннего производителя.

Правила поведения

В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.