使用 Visual Studio Code 进行 PowerShell 开发
Visual Studio Code(VS Code)是Microsoft的跨平台脚本编辑器。 它与 PowerShell 扩展一起提供丰富的交互式脚本编辑体验,使编写可靠的 PowerShell 脚本更加轻松。 使用 PowerShell 扩展的 Visual Studio Code 是编写 PowerShell 脚本的建议编辑器。
它支持以下 PowerShell 版本:
- PowerShell 7.2 及更高版本(Windows、macOS 和 Linux)
- Windows PowerShell 5.1(仅限 Windows)和 .NET Framework 4.8
注意
Visual Studio Code 与 Visual Studio不同。
入门指南
在开始之前,请确保系统上存在 PowerShell。 有关 Windows、macOS 和 Linux 上的新式工作负载,请参阅以下链接:
- 在 Linux 上安装 PowerShell
- 在 macOS 上安装 PowerShell
- 在 Windows 上安装 PowerShell
有关传统的 Windows PowerShell 工作负载,请参阅 安装 Windows PowerShell。
重要
Windows PowerShell ISE 仍可用于 Windows。 但是,这个功能不再处于积极开发阶段。 ISE 仅适用于 PowerShell 5.1 及更早版本。 作为 Windows 的一个组件,它将继续得到正式支持,以用于安全和高优先级的服务修复。 我们没有计划从 Windows 中删除 ISE。
安装 VS Code 和 PowerShell 扩展
安装 Visual Studio Code。 有关详细信息,请参阅设置 Visual Studio Code 概述。
每个平台都有安装说明:
安装 PowerShell 扩展。
- 在控制台中键入
code
来启动 VS Code 应用,或者,如果您安装了 Visual Studio Code 预览版,请键入code-insiders
。 - 在 Windows 或 Linux 中,通过按 Ctrl+P启动 快速打开。 在 macOS 上,按 Cmd+P。
- 在 Quick Open 中,键入
ext install powershell
,然后按 Enter。 - 扩展视图随即在侧边栏上打开。 从 Microsoft 中选择 PowerShell 扩展。
- 在 Microsoft 的 PowerShell 扩展上,单击“安装”按钮。
- 安装后,如果看到 “安装”按钮变为 重新加载,请单击 重新加载。
- 重新加载 VS Code 后,即可进行编辑。
- 在控制台中键入
例如,若要创建新文件,请单击 文件 > 新建。 若要保存它,请单击 文件 > 保存,然后提供文件名,例如 HelloWorld.ps1
。 若要关闭该文件,请单击文件名旁边的 X
。
若要退出 VS Code,请单击文件 > 退出。
在受限系统上安装 PowerShell 扩展
某些系统设置为要求验证所有代码签名。 可能会收到以下错误:
Language server startup failed.
当 PowerShell 的执行策略由 Windows 组策略设置时,可能会出现此问题。 若要手动批准适用于 VS Code 的 PowerShell 编辑器服务和 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 的安装。
使用以下步骤选择版本:
- 在 Windows 或 Linux 上,使用 Ctrl+Shift+P 打开命令面板。 在 macOS 上,使用 Cmd+Shift+P。
- 搜索会话。
- 单击 PowerShell:显示会话菜单。
- 从列表中选择要使用的 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 体验,获取有关如何为 PowerShell 编辑配置 VS Code 的其他提示。
将自己的 PowerShell 路径添加到会话菜单
可以通过 Visual Studio Code 设置将其他 PowerShell 可执行路径添加到会话菜单:powershell.powerShellAdditionalExePaths
。
可以使用 GUI 执行此作:
- 从 命令面板 搜索并选择 打开用户设置。 或使用 Windows 或 Linux 上的键盘快捷方式,Ctrl+,。 在 macOS 上,使用 Cmd+,。
- 在 设置 编辑器中,搜索 PowerShell 其他 Exe 路径。
- 单击 添加项。
- 对于 密钥(在 项下),请为此额外的 PowerShell 安装提供你选择的名称。
- 对于 值(在 值下),请提供可执行文件本身的绝对路径。
可以根据需要添加任意数量的其他路径。 添加的项显示在会话菜单中,以给定的键作为名称。
或者,可以将键值对添加到 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 之前,此设置是具有所需键 exePath
和 versionName
的对象列表。 引入了重大变更,以支持通过图形用户界面进行配置。 如果之前已配置此设置,请将其转换为新格式。 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 脚本的文件夹。
- 选择文件 > 打开文件... 打开 PowerShell 脚本文件
- 设置断点 - 选择一行,然后按 F9
- 按 F5 开始调试
此时应出现“调试”操作窗格,通过该窗格可以中断调试器、执行、继续和停止调试。
工作区调试
工作区调试是指在从文件 菜单中使用打开文件夹...选项打开的文件夹进行调试。你打开的文件夹通常是你的 PowerShell 项目文件夹或 Git 仓库的根目录。 通过工作区调试,可以定义多个调试配置,而不仅仅是调试当前打开的文件。
按照以下步骤创建调试配置文件:
按 Ctrl+Shift+D打开 Windows 或 Linux 上的 调试 视图。 在 macOS 上,按 Cmd+Shift+D。
单击创建 launch.json 文件链接。
在选择环境提示框中,选择 PowerShell。
选择要使用的调试类型:
- 启动当前文件 - 启动和调试当前活动编辑器窗口中的文件
- 启动脚本 - 启动和调试指定的文件或命令
- 交互式会话 - 从集成式控制台执行的调试命令
- 附加 - 将调试器附加到正在运行的 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:启动脚本。 使用此配置,可以指定包含可选参数的文件,无论哪个文件在编辑器中处于活动状态,只要按 F5,即可使用。
建立调试配置后,可以选择在调试会话期间要使用的配置。 从调试视图工具栏的调试配置下拉菜单中选择配置。
PowerShell 扩展疑难解答
如果使用 VS Code 进行 PowerShell 脚本开发时遇到任何问题,请参阅 GitHub 上的 故障排除指南。
有用的资源
有一些视频和博客文章可能有助于开始使用适用于 VS Code 的 PowerShell 扩展:
视频
博客文章
- PowerShell DSC 扩展
- 在 Visual Studio Code 中编写和调试 PowerShell 脚本
- Visual Studio Code 调试指南
- 在 Visual Studio Code 中调试 PowerShell
- Visual Studio Code 中的 PowerShell 开发入门
- 用于 PowerShell 开发的 Visual Studio Code 编辑功能 - 第 1 部分
- 面向 PowerShell 开发的 Visual Studio Code 编辑功能 - 第 2 部分
- 在 Visual Studio Code 中调试 PowerShell 脚本 - 第 1 部分
- 在 Visual Studio Code 中调试 PowerShell 脚本 - 第 2 部分
PowerShell 扩展项目源代码
可以在 GitHub 中找到 PowerShell 扩展的源代码。
如果你有兴趣参与,将极大改进拉取请求。 请参考 GitHub 上的 开发人员文档 来入门。