现已推出!阅读有关 10 月份新功能和修复的说明。

Visual Studio Code 中的 PowerShell

PowerShell 是基于 .NET 的基于任务的命令行外壳程序和脚本语言,它为任何平台上的管理员提供强大的工具集。

Microsoft 的 PowerShell 扩展为 Visual Studio Code (VS Code) 提供丰富的语言支持和功能,例如 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 扩展

可以从 Visual Studio Code Marketplace 安装 PowerShell 扩展,方法是单击 安装按钮。也可以在 VS Code 中安装 PowerShell 扩展,方法是使用键盘快捷键 ⇧⌘X (Windows、Linux Ctrl+Shift+X) 打开“扩展”视图,键入“PowerShell”,然后选择 PowerShell 扩展

PowerShell extension

主要功能

调试

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

多版本支持

可以按照 这些说明 配置 PowerShell 扩展以使用计算机上安装的任何支持的 PowerShell 版本。

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

CodeLens 支持

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

CodeLens 功能包括

  • Pester 运行测试调试测试

    Pester CodeLens Integration

  • Pester 符号支持

    CodeLens Pester Symbol Support

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

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

    CodeLens Function Reference Support

PSScriptAnalyzer 集成

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

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

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

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

PSScriptAnalyzer Settings

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 扩展允许使用从命令面板 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 中的 PowerShell: 从 Plaster 模板创建新项目 命令创建新的 Plaster 项目。

Plaster Project

PowerShell 扩展设置

可以从 文件 > 首选项 > 设置 菜单项自定义 VS Code 设置

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

codeGear

您还可以使用键盘快捷键 ⌘,(Windows、Linux Ctrl+, 打开您的设置。您仍然可以使用命令面板(⇧⌘P(Windows、Linux Ctrl+Shift+P)中的 **首选项:打开用户设置(JSON)** 命令打开 `settings.json` 文件,或者通过 `“workbench.settings.editor”` 设置更改默认设置编辑器。

请访问 用户和工作区设置 了解有关配置 VS Code 设置的更多信息。

Types.ps1xml 和 Format.ps1xml 文件

PowerShell 的 `.ps1xml` 文件用于扩展类型系统和定义输出格式。有关这些文件的更多信息,请参阅 PowerShell 官方文档中的 Types.ps1xmlFormat.ps1xml。您可以通过安装 Red Hat 的 XML 扩展 来获取在编写 `.ps1xml` 文件时的 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 扩展对所有 `.ps1xml` 文件使用来自 PowerShell 存储库的官方 XML 架构。配置这些架构可在 `ps1xml` 文件中启用以下功能

  • 语法错误报告
  • 架构验证
  • 标签和属性完成
  • 自动闭合标签
  • 符号高亮显示
  • 文档折叠
  • 文档符号和提纲
  • 重命名支持
  • 文档格式化

示例脚本

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

~/.vscode/extensions/ms-vscode.PowerShell-<version>/examples

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

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

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

Open PowerShell Examples

其他资源

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

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

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

测试新功能并提供反馈

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

Screenshot showing the button to switch to a pre-release version.

如果您发现错误,请 打开问题 并在我们修复它时还原到稳定版本。