Visual Studio Code 中的 PowerShell

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

Visual Studio Code (VS Code) 的Microsoft PowerShell扩展提供了丰富的语言支持和功能,例如 PowerShell 的语法完成、定义跟踪和 linting。该扩展应该可以在任何 支持VS Code 本身和 PowerShell Core 7.2 或更高版本的地方工作。对于 Windows PowerShell,仅支持版本 5.1,并且仅尽力支持。PowerShell Core 6、7.0 和 7.1 已终止支持。我们测试以下配置:

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

安装 PowerShell 扩展

可以通过单击“安装”按钮从 Visual Studio Code Marketplace 安装 PowerShell 扩展 。您还可以从 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 ) )。

代码透镜支持

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

CodeLens 的功能包括:

  • Pester运行测试调试测试

    Pester CodeLens 集成

  • 纠缠符号支持

    CodeLens Pester 符号支持

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

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

    CodeLens 功能参考支持

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 设置

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

纠缠集成

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

石膏一体化

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

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

石膏工程

PowerShell 扩展设置

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

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

代码齿轮

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

有关配置 VS Code 设置的更多信息,请转到用户和工作区设置。

Types.ps1xml 和 Format.ps1xml 文件

PowerShell.ps1xml文件用于扩展类型系统并定义输出格式。有关这些文件的更多信息,请参阅有关Types.ps1xmlFormat.ps1xml的官方 PowerShell 文档。.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 扩展对所有.ps1xml文件使用 PowerShell 存储库中的官方 XML 架构。配置这些架构可在文件中启用以下功能 ps1xml

  • 语法错误报告
  • 模式验证
  • 标签和属性完成
  • 自动关闭标签
  • 符号突出显示
  • 文件折叠
  • 文档符号和轮廓
  • 重命名支持
  • 文档格式设置

示例脚本

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

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

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

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

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

打开 PowerShell 示例

其他资源

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

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

有关调试的更多信息,请查看嘿,脚本专家!@keithHill撰写的关于使用 PowerShell 扩展进行调试的两部分博客文章系列:

测试新功能并提供反馈

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

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

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