Azure Data Studio 的 PowerShell 编辑器支持

此扩展提供了 Azure Data Studio 中丰富的 PowerShell 编辑器支持。 现在,你可以使用 Azure Data Studio 提供的出色的、类似于 IDE 的接口编写和调试 PowerShell 脚本。

PowerShell 扩展

功能

  • 语法突出显示
  • 代码片段
  • IntelliSense cmdlet 等
  • PowerShell Script Analyzer 提供的基于规则的分析
  • 转到 cmdlet 和变量的定义
  • 查找 cmdlet 和变量的引用
  • 文档和工作区符号发现
  • 使用 F8 运行选择的 PowerShell 代码
  • 使用 Ctrl+F1 为游标下的符号启动联机帮助
  • 基本交互式控制台支持!

安装扩展

可以按照 Azure Data Studio 文档中的步骤安装 PowerShell 扩展的官方版本。 在“扩展”窗格中,搜索“PowerShell”扩展并将其安装在此处。 未来有任何扩展更新,你都会收到系统自动发送的消息!

你还可以从发布页安装 VSIX 包,并通过命令行进行安装:

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

平台支持

  • Windows 7 到 10(带 windows PowerShell v3 及更高版本和 PowerShell Core)
  • 带有 PowerShell Core(所有 PowerShell 支持的分发版)的 Linux
  • macOS(PowerShell Core)

阅读 FAQ 获取常见问题的解答。

安装 PowerShell Core

如果在 MacOS 或 Linux 上运行 Azure Data Studio,则可能还需要安装 PowerShell Core。

PowerShell Core 是 GitHub 上的开放源代码项目。 有关在 MacOS 或 Linux 平台上安装 PowerShell Core 的详细信息,请参阅以下文章:

示例脚本

扩展的 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]

创建和打开文件

要在编辑器中创建并打开新文件,请使用 PowerShell 集成终端中的 New-EditorFile。

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 示例

若要使用这些示例(如下所示),需要从 PowerShell 库安装 SqlServer 模块。

Install-Module -Name SqlServer

注意

21.1.18102 及更高版本中,除 Windows PowerShell 以外,SqlServer 模块还支持 PowerShell Core 6.2 及更高版本。

在此示例中,我们使用 Get-SqlInstance cmdlet 来获取 ServerA 和 ServerB 的 Server SMO 对象。 此命令的默认输出将包括实例的实例名称、版本、Service Pack 和 CU 更新级别。

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
  • Reporting Services

在下面的示例中,我们将执行 dirGet-ChildItem 的别名)来获取已注册的服务器文件中列出的所有 SQL Server 实例的列表。

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

下面是输出的示例:

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

对于涉及数据库或数据库中对象的许多操作,都可以使用 Get-SqlDatabase cmdlet。 如果为 -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 cmdlet 来检索 ServerB 实例上的所有数据库列表,然后显示一个网格/表(使用 Out-GridView cmdlet),以选择应备份的数据库。 用户单击“确定”按钮后,只会备份突出显示的数据库。

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

同样,此示例将获取已注册的服务器文件中列出的所有 SQL Server 实例的列表,然后调用 Get-SqlAgentJobHistory,以便为每个列出的 SQL Server 实例报告自午夜后每个失败的 SQL 代理作业。

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

在此示例中,我们执行 dirGet-ChildItem 的别名)来获取已注册的服务器文件中列出的所有 SQL Server 实例的列表,然后使用 Get-SqlDatabase cmdlet 获取每个实例的数据库列表。

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 许可证获得授权。 有关此项目的版本所包含的第三方二进制文件的详细信息,请参阅第三方通知文件。

行为准则

此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答;若有其他任何问题或意见,请联系 opencode@microsoft.com