参加你附近的 ,了解 VS Code 中的 AI 辅助开发。

Visual Studio Code 中的 PowerShell

PowerShell 是一种基于 .NET 构建的、面向任务的命令行 shell 和脚本语言,它为任何平台上的管理员提供了强大的工具集。

适用于 Visual Studio Code (VS Code) 的 Microsoft PowerShell 扩展提供了丰富的语言支持和功能,例如 PowerShell 的语法补全、定义跟踪和代码风格检查 (linting)。该扩展应在所有支持 VS Code 的地方,使用当前受支持的 PowerShell 7+ 版本正常工作。

我们尽最大努力为 Windows PowerShell 5.1 提供支持。需要 .NET Framework 4.8 或更高版本。

支持 VS Code 远程开发环境,包括 GitHub CodespacesVS Code Server

重要

Visual Studio Code for the Web 仅支持有限的功能,例如基本的语法高亮,因为 PowerShell 引擎无法在此环境中运行。

我们积极测试以下配置:

  • Windows Server 2022,搭载 Windows PowerShell 5.1 和 PowerShell 7+
  • macOS 14.7,搭载 PowerShell 7+
  • Ubuntu 24.04,搭载 PowerShell 7+

在 Windows 上,我们还在启用和禁用约束语言模式 (Constrained Language Mode) 的情况下进行测试。

安装 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 安装说明进行操作。

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 文件用于扩展类型系统和定义输出格式。有关这些文件的更多信息,请参阅关于 Types.ps1xmlFormat.ps1xml 的官方 PowerShell 文档。通过安装 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 schema。配置这些 schema 后,可以在 ps1xml 文件中启用以下功能:

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

示例脚本

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

~/.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.

如果你发现了一个 bug,请提交一个 issue,并在我们修复它的期间恢复到稳定版本。