使用 Visual Studio Code 进行远程编辑和调试

对于熟悉 ISE 的你来说,你可能还记得可以从集成控制台运行 psedit file.ps1 以在 ISE 中打开本地或远程文件。

该功能在适用于 VSCode 的 PowerShell 扩展中也可用。 本指南将演示如何操作。

必备条件

本指南假定你拥有:

  • 可访问的远程资源(例如:虚拟机、容器)
  • 在其中运行的 PowerShell 和主机计算机
  • VSCode 和适用于 VSCode 的 PowerShell 扩展

此功能适用于 PowerShell 和 Windows PowerShell。

当通过 WinRM、PowerShell Direct 或 SSH 连接到远程计算机时,此功能也适用。 如果要使用 SSH,但使用的是 Windows,请查看 Win32 版本的 SSH

重要

Open-EditorFilepsedit 命令仅适用于 PowerShell 集成控制台 (由适用于 VSCode 的 PowerShell 扩展创建)。

用法示例

这些示例介绍从 MacBook Pro 到在 Azure 中运行的 Ubuntu VM 的远程编辑和调试。 Windows 上的过程相同。

使用 Open-EditorFile 编辑的本地文件

启动适用于 VSCode 的 PowerShell 扩展并打开 PowerShell 集成控制台之后,可以在编辑器中键入 Open-EditorFile foo.ps1psedit foo.ps1 来打开本地 foo.ps1 文件。

Open-EditorFile foo.ps1 可在本地工作

备注

文件 foo.ps1 必须已经存在。

由此,我们可以:

  • 将断点添加到装订线

    将断点添加到装订线

  • 按 F5 调试 PowerShell 脚本。

    调试本地 PowerShell 脚本

调试期间,可以与调试控制台进行交互,查看左边范围中的变量,以及所有其他标准调试工具。

使用 Open-EditorFile 编辑的远程文件

现在让我们进入远程文件编辑和调试。 步骤几乎相同,只需要先完成一个操作 - 将 PowerShell 会话输入到远程服务器。

有一个 cmdlet 可以做到这一点。 它被称为 Enter-PSSession

简而言之:

  • Enter-PSSession -ComputerName foo 通过 WinRM 启动会话
  • Enter-PSSession -ContainerId fooEnter-PSSession -VmId foo 通过 PowerShell Direct 启动会话
  • Enter-PSSession -HostName foo 通过 SSH 启动会话

有关详细信息,请参阅 Enter-PSSession 的文档。

由于我们要远程处理 Azure 中的 Ubuntu VM,因此我们将使用 SSH。

首先,在集成控制台中,运行 Enter-PSSession。 当提示符的左侧显示 [<hostname>] 时,即表示已连接到远程会话。

调用 Enter-PSSession 以连接到远程会话

现在,我们可以执行与编辑本地脚本相同的步骤。

  1. 运行 Open-EditorFile test.ps1psedit test.ps1 以打开远程 test.ps1 文件

    编辑远程系统上的脚本

  2. 编辑文件/设置断点

    编辑并设置断点

  3. 开始调试 (F5) 远程文件

    调试远程脚本

如有任何疑问,可在 GitHub 存储库中提问。