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

对于熟悉 ISE 的用户,你可能会回忆说,你可以从集成控制台运行 psedit file.ps1 以在 ISE 中打开文件(本地或远程)。

此功能在适用于 VSCode 的 PowerShell 扩展中也可用。 本指南说明如何去做这件事。

先决条件

本指南假定你有:

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

此功能适用于 PowerShell 和 Windows PowerShell。

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

重要

Open-EditorFilepsedit 命令仅适用于由适用于 VSCode 的 PowerShell 扩展创建的 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 存储库中提出问题。