Visual Studio Code 中的 PowerShell

PowerShell 是一个基于任务的命令行外壳和脚本语言,构建在 .NET 之上,为任何平台上的管理员提供了强大的工具集。

微软为Visual Studio Code(VS Code)提供的PowerShell扩展提供了丰富的语言支持功能,如语法补全、定义跟踪和PowerShell的代码检查。该扩展应在VS Code本身和PowerShell Core 7.2或更高版本支持的任何地方工作。对于Windows PowerShell,仅支持版本5.1,并且仅在尽力而为的基础上支持。PowerShell Core 6、7.0和7.1已达到支持终止。我们测试了以下配置:

  • Windows Server 2022 带有 Windows PowerShell 5.1 和 PowerShell 7.2
  • Windows Server 2019 带有 Windows PowerShell 5.1 和 PowerShell 7.2
  • macOS 11 带有 PowerShell Core 7.2
  • Ubuntu 20.04 带有 PowerShell Core 7.2

安装 PowerShell 扩展

PowerShell 扩展可以从 Visual Studio Code 市场安装,点击 安装按钮。你也可以在 VS Code 中通过打开 扩展视图来安装 PowerShell 扩展,使用键盘快捷键 ⇧⌘X (Windows, Linux Ctrl+Shift+X),输入 PowerShell, 然后选择 PowerShell 扩展:

PowerShell 扩展

主要特性

调试

PowerShell 扩展使用 VS Code 内置的 调试界面 来允许调试 PowerShell 脚本和模块。有关调试 PowerShell 的更多信息,请参阅 使用 VS Code

多版本支持

你可以通过遵循这些说明来配置PowerShell扩展,以使用你机器上安装的任何受支持的PowerShell版本。

或者从命令面板运行PowerShell: 显示会话菜单命令 (⇧⌘P (Windows, Linux Ctrl+Shift+P)).

CodeLens 支持

CodeLenses 是 VS Code 的一项功能,用于提供可操作的上下文信息,这些信息显示在源代码中。

CodeLens 功能包括:

  • Pester 运行测试调试测试

    Pester CodeLens 集成

  • Pester 符号支持

    CodeLens Pester 符号支持

  • 函数、变量、类和其他符号引用

    CodeLens 引用支持显示符号在代码中被引用的次数,并允许您跳转到特定的引用。

    CodeLens 函数引用支持

PSScriptAnalyzer 集成

PSScriptAnalyzer 是一个 PowerShell 模块,为模块和脚本提供静态源代码检查器。PSScriptAnalyzer 包含验证 PowerShell 代码质量的规则。这些规则基于 PowerShell 团队和社区确定的最佳实践。PSScriptAnalyzer 生成诊断记录(错误和警告),以告知用户潜在的代码缺陷,并建议可能的改进解决方案。

PowerShell 扩展默认包含 PSScriptAnalyzer,并自动对你在 VS Code 中编辑的 PowerShell 脚本文件进行分析。

PSScriptAnalyzer 附带了一系列内置规则,用于检查 PowerShell 源代码的各个方面,例如未初始化变量的存在、PSCredential 类型的使用、Invoke-Expression 的使用等。该模块还允许您包含或排除特定规则。

要禁用PSScriptAnalyzer,请打开您的设置(⌘, (Windows, Linux Ctrl+,)),浏览 扩展,选择PowerShell扩展,并取消选中脚本 分析:启用的复选框(powershell.scriptAnalysis.enable)。

PSScriptAnalyzer 设置

PSScriptAnalyzer 还提供代码格式化功能。您可以使用 格式化文档 命令或 (⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I)) 键盘快捷键来调用自动文档格式化。

Pester 集成

Pester 是一个用于运行单元测试的框架,Windows PowerShell 5.1 预装了 Pester 3.40。要更新 Pester 或在其他平台上安装最新版本,请遵循 Pester 安装说明

Plaster 集成

Plaster 是一个基于模板的文件和项目生成器,用 PowerShell 编写。其目的是简化 PowerShell 模块项目、Pester 测试、DSC 配置等的创建过程。

PowerShell 扩展允许使用命令面板中的 PowerShell: 从 Plaster 模板创建新项目 命令创建新的 Plaster 项目 (⇧⌘P (Windows, Linux Ctrl+Shift+P)).

Plaster 项目

PowerShell 扩展设置

你可以通过文件 > 首选项 > 设置菜单项来自定义VS Code的设置

你也可以选择位于活动栏左下角的齿轮图标。

codeGear

你也可以使用键盘快捷键 ⌘, (Windows, Linux Ctrl+,) 来打开你的设置。 你仍然可以通过从命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 使用 Preferences: Open User Settings (JSON) 命令打开 settings.json 文件,或者通过更改默认设置编辑器 使用 "workbench.settings.editor" 设置。

前往用户和工作区设置以获取有关配置VS Code设置的更多信息。

Types.ps1xml 和 Format.ps1xml 文件

PowerShell .ps1xml 文件用于扩展类型系统并定义输出格式。有关这些文件的更多信息,请参阅官方 PowerShell 文档中的 Types.ps1xmlFormat.ps1xml。在编写 .ps1xml 文件时,您可以通过安装 Red Hat 的 XML 扩展 来获得 IntelliSense 功能。安装后,将此配置添加到您的用户设置中:

"xml.fileAssociations": [
  {
    "systemId": "https://raw.githubusercontent.com/PowerShell/PowerShell/master/src/Schemas/Format.xsd",
    "pattern": "**/*.Format.ps1xml"
  },
  {
    "systemId": "https://raw.githubusercontent.com/PowerShell/PowerShell/master/src/Schemas/Types.xsd",
    "pattern": "**/*.Types.ps1xml"
  }
]

此配置告诉XML扩展使用来自PowerShell存储库的官方XML模式来处理所有.ps1xml文件。配置这些模式可以在ps1xml文件中启用以下功能:

  • 语法错误报告
  • 模式验证
  • 标签和属性补全
  • 自动关闭标签
  • 符号高亮
  • 文档折叠
  • 文档符号和大纲
  • 重命名支持
  • 文档格式化

示例脚本

扩展中包含的示例脚本可以在以下路径找到。

~/.vscode/extensions/ms-vscode.PowerShell-/examples

要在VS Code中打开或查看示例,请从您的PowerShell命令提示符运行以下命令:

code (Get-ChildItem ~\.vscode\extensions\ms-vscode.PowerShell-*\examples)[-1]

你也可以从命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中使用PowerShell: 打开示例文件夹命令来打开示例。

打开PowerShell示例

额外资源

PowerShell 文档中有更详细的文章。从 使用 VS Code 开始。

查看故障排除指南以获取常见问题的答案。

有关调试的更多信息,请查看由@keithHill撰写的关于使用PowerShell扩展进行调试的Hey, Scripting Guy!两篇博客系列文章:

测试新功能并提供反馈

我们鼓励您尽可能尝试预发布版本。当有预发布版本可用时,可以通过市场使用切换到预发布版本按钮进行安装。您可以通过出现的切换到发布版本按钮切换回扩展的稳定版本。您还可以使用卸载按钮旁边的箭头并选择安装其他版本...来降级到扩展的其他版本。

截图显示切换到预发布版本的按钮。

如果您发现了一个错误,请提交一个问题,并在我们修复时恢复到稳定版本。