使用 Visual Studio Code 进行 PowerShell 开发

Visual Studio Code (VS Code) 是 Microsoft 开发的跨平台脚本编辑器。 它与 PowerShell 扩展相结合,提供了丰富的交互式脚本编辑体验,从而可以更轻松地编写可靠的 PowerShell 脚本。 建议使用带有 PowerShell 扩展的 Visual Studio Code 编辑器来编写 PowerShell 脚本。

它支持以下 PowerShell 版本:

  • PowerShell 7.2 及更高版本(Windows、macOS 和 Linux)
  • 具有 .NET Framework 4.8 的 Windows PowerShell 5.1(仅限 Windows)

备注

Visual Studio Code 与 Visual Studio 不同。

入门

开始前,请确保系统上安装有 PowerShell。 有关 Windows、macOS 和 Linux 上的新式工作负荷,请参阅以下链接:

有关传统 Windows PowerShell 工作负载,请参阅安装 Windows PowerShell

重要

Windows PowerShell ISE 仍适用于 Windows。 但是,它不再处于主动功能开发状态。 ISE 仅适用于 PowerShell 5.1 及更旧版本。 作为 Windows 的一个组件,它仍会获得安全性和高优先级服务修补程序的官方支持。 我们没有从 Windows 中删除 ISE 的计划。

安装 VS Code 和 PowerShell 扩展

  1. 安装 Visual Studio Code。 有关详细信息,请参阅设置 Visual Studio Code 概述。

    每个平台都有安装说明:

  2. 安装 PowerShell 扩展。

    1. 通过在控制台中键入 code 或键入code-insiders(在安装 Visual Studio Code 预览体验成员的情况下)来启动 VS Code 应用。
    2. 通过按 Ctrl+P,在 Windows 或 Linux 上启动“Quick Open” 。 在 macOS 上,按 Cmd+P
    3. 在“Quick Open”中,键入 ext install powershell,然后按 ENTER 。
    4. “扩展”视图随即在侧边栏上打开 。 从 Microsoft 中选择 PowerShell 扩展。
    5. 在 Microsoft 下单击 PowerShell 扩展上的“安装”按钮 。
    6. 安装后,如果看到“安装”按钮变为“重载” ,则单击“重载” 。
    7. 重载 VS Code 后即可开始编辑。

例如,若要创建新文件,请单击“文件”>“新建”。 若要保存,请单击“文件”>“保存”,然后提供文件名,例如 HelloWorld.ps1。 若要关闭文件,请单击文件名旁的 X。 若要退出 VS Code,请单击“文件”>“退出”。

在受限制的系统上安装 PowerShell 扩展

某些系统设置为要求验证所有代码签名。 可能看到以下错误:

Language server startup failed.

当 Windows 组策略设置 PowerShell 的执行策略时,会出现此问题。 若要手动批准 PowerShell 编辑器服务和适用于 VS Code 的 PowerShell 扩展,则打开 PowerShell 提示符并运行以下命令:

Import-Module $HOME\.vscode\extensions\ms-vscode.powershell*\modules\PowerShellEditorServices\PowerShellEditorServices.psd1

系统会提示你“是否要运行来自此不可信发布者的软件?”键入 A 运行此文件。 然后打开 VS Code,并验证 PowerShell 扩展是否正常工作。 如果在开始使用时仍有问题,请在 GitHub 问题中告诉我们。

选择要与扩展一起使用的 PowerShell 版本

将 PowerShell 与 Windows PowerShell 并行安装后,现在可以将特定版本的 PowerShell 与 PowerShell 扩展一起使用。 此功能通过不同操作系统上的几个已知路径来发现安装的 PowerShell。

使用以下步骤选择版本:

  1. 在 Windows 或 Linux 上,使用 Ctrl+Shift+P 打开“命令面板” 。 在 macOS 上,使用 Cmd+Shift+P
  2. 搜索“会话” 。
  3. 单击“PowerShell: 显示会话菜单”。
  4. 选择要从列表中使用的 PowerShell 版本。

如果已将 PowerShell 安装到非典型位置,则最初可能不会显示在会话菜单中。 可以按如下所述添加你自己的自定义路径来扩展会话菜单。

还可以从状态栏右下角的 {} 图标访问 PowerShell 会话菜单。 将鼠标悬停在此图标上或选择此图标会显示会话菜单的快捷方式和一个小型图钉图标。 如果选择此图钉图标,版本号会添加到状态栏中。 版本号是会话菜单的快捷方式,需要单击的次数较少。

备注

固定版本号会复制 VS Code 1.65 版本之前的扩展的行为。 VS Code 1.65 版本更改了 PowerShell 扩展使用的 API,并对语言扩展的状态栏进行了标准化处理。

Visual Studio Code 的配置设置

首先,如果不熟悉如何更改 VS Code 中的设置,建议阅读 Visual Studio Code 的设置文档。

阅读此文档后,可以在 settings.json中添加配置设置。

{
    "editor.renderWhitespace": "all",
    "editor.renderControlCharacters": true,
    "files.trimTrailingWhitespace": true,
    "files.encoding": "utf8bom",
    "files.autoGuessEncoding": true
}

如果不希望这些设置影响所有文件类型,则 VS Code 还允许按语言进行配置。 创建在 [<language-name>] 字段中放置设置,可以配置特定于语言的设置。 例如:

{
    "[powershell]": {
        "files.encoding": "utf8bom",
        "files.autoGuessEncoding": true
    }
}

提示

有关 VS Code 中文件编码的详细信息,请参阅了解文件编码。 另外,请查看如何在 VS Code 中复制 ISE 体验,以获取有关如何配置 VS Code 以进行 PowerShell 编辑的其他提示。

将你自己的 PowerShell 路径添加到会话菜单

可以通过 Visual Studio Code 设置将其他 PowerShell 可执行文件路径添加到会话菜单:powershell.powerShellAdditionalExePaths

你可以使用 GUI 来实现此目的:

  1. 在命令面板中,搜索并选择“打开用户设置”。 或者,在 Windows 或 Linux 上使用键盘快捷键 Ctrl+。 在 macOS 上使用 Cmd+
  2. 在“设置”编辑器中,搜索“PowerShell 附加 Exe 路径”。
  3. 单击“添加项” 。
  4. 对于“键”(位于“项”下),请提供为此附加 PowerShell 安装选择的名称。
  5. 对于“值”(位于“值”下),请提供可执行文件本身的绝对路径。

可添加任意数量的附加路径。 添加的项显示在会话菜单中,以给定的键作为名称。

或者,可以将键值对添加到 settings.json 中的对象 powershell.powerShellAdditionalExePaths

{
    "powershell.powerShellAdditionalExePaths": {
        "Downloaded PowerShell": "C:/Users/username/Downloads/PowerShell/pwsh.exe",
        "Built PowerShell": "C:/Users/username/src/PowerShell/src/powershell-win-core/bin/Debug/net6.0/win7-x64/publish/pwsh.exe"
    },
}

注意

对于版本 2022.5.0 之前的扩展,此设置是具有所需键 exePathversionName 的对象列表。 引入了一项中断性变更,以支持通过 GUI 进行配置。 如果之前已配置此设置,请将其转换为新格式。 为 versionName 提供的值现在是“键”,而为 exePath 提供的值现在是“值”。 通过重置值和使用“设置”接口,可以更轻松地完成此操作。

若要设置默认 PowerShell 版本,请将值 powershell.powerShellDefaultVersion 设置为会话菜单中显示的文本(用于键的文本):

{
    "powershell.powerShellAdditionalExePaths": {
        "Downloaded PowerShell": "C:/Users/username/Downloads/PowerShell/pwsh.exe",
    },
    "powershell.powerShellDefaultVersion": "Downloaded PowerShell",
}

配置此设置后,请重新启动 VS Code 或从“命令面板”中重新加载当前 VS Code 窗口,键入 Developer: Reload Window

如果打开会话菜单,你现在会看到附加 PowerShell 安装。

提示

如果从源生成 PowerShell,则这是测试 PowerShell 的本地生成的好办法。

使用 Visual Studio Code 进行调试

无工作区调试

在 VS Code 版本 1.9(或更高版本)中,无需打开包含 PowerShell 脚本的文件夹即可调试 PowerShell 脚本。

  1. 选择“文件”>“打开文件...”打开 PowerShell 脚本文件
  2. 设置断点 - 选择一行,然后按 F9
  3. F5 开始调试

此时应出现“调试”操作窗格,通过该窗格可以中断调试器、执行、继续和停止调试。

工作区调试

工作区调试是指文件夹上下文中的调试,该文件夹是从“文件” 菜单使用“打开文件夹...” 打开的。打开的文件夹通常是 PowerShell 项目文件夹或 Git 存储库的根文件夹。 通过工作区调试可以定义多个调试配置,而不是只调试当前打开的文件。

按照以下步骤创建调试配置文件:

  1. 通过按 Ctrl+Shift+D,在 Windows 或 Linux 上打开“调试” 视图。 在 macOS 上,按 Cmd+Shift+D

  2. 单击“创建 launch.json 文件” 链接。

  3. 在“选择环境” 提示框中,选择“PowerShell” 。

  4. 选择要使用的调试类型:

    • 启动当前文件 - 在当前活动的编辑器窗口中启动和调试文件
    • 启动脚本 - 启动和调试指定的文件或命令
    • 交互式会话 - 从集成控制台执行的调试命令
    • 附加 - 将调试器附加到正在运行的 PowerShell 主机进程

VS Code 会在工作区文件夹的根目录中创建一个目录和一个 .vscode\launch.json 文件,用来存储调试配置。 如果文件位于 Git 存储库中,则通常需要提交 launch.json 文件。 launch.json 文件的内容为:

{
  "version": "0.2.0",
  "configurations": [
      {
          "type": "PowerShell",
          "request": "launch",
          "name": "PowerShell Launch (current file)",
          "script": "${file}",
          "args": [],
          "cwd": "${file}"
      },
      {
          "type": "PowerShell",
          "request": "attach",
          "name": "PowerShell Attach to Host Process",
          "processId": "${command.PickPSHostProcess}",
          "runspaceId": 1
      },
      {
          "type": "PowerShell",
          "request": "launch",
          "name": "PowerShell Interactive Session",
          "cwd": "${workspaceRoot}"
      }
  ]
}

此文件表示常见调试方案。 在编辑器中打开此文件时,会显示“添加配置...” 按钮。 单击此按钮可添加更多 PowerShell 调试配置。 其中可添加的一个有用配置是“PowerShell:Launch Script。 使用此配置,可以指定一个文件,无论编辑器中哪个文件处于活动状态,在每次按下 F5 时,都使用该文件中包含的可选参数。

建立调试配置后,可以选择要在调试会话期间使用的配置。 从“调试” 视图工具栏的调试配置下拉菜单中选择配置。

对 PowerShell 扩展进行故障排除

如果在使用 VS Code 进行 PowerShell 脚本开发时遇到任何问题,请参阅 GitHub 上的故障排除指南

有用的资源

有一些视频和博客文章可能对你开始使用用于 VS Code 的 PowerShell 扩展很有帮助:

视频

博客文章

PowerShell 扩展项目源代码

可以在 GitHub 上找到 PowerShell 扩展的源代码。

如果你有兴趣参与,将极大改进拉取请求。 请遵循 GitHub 上的开发人员文档来开始使用。