Visual Studio Code 中的 PowerShell
PowerShell 是一个基于任务的命令行 shell 和脚本语言,构建于 .NET 之上,为任何平台上的管理员提供强大的工具集。
Microsoft Visual Studio Code (VS Code) 的 PowerShell 扩展为 PowerShell 提供了丰富的语言支持和功能,例如语法补全、定义跟踪和代码检查。该扩展应在 VS Code 本身和 PowerShell Core 7.2 或更高版本受支持的任何地方工作。对于 Windows PowerShell,仅支持 5.1 版本,并且仅在尽力而为的基础上提供支持。PowerShell Core 6、7.0 和 7.1 已达到支持终止日期。我们测试了以下配置
- Windows Server 2022,搭载 Windows PowerShell 5.1 和 PowerShell 7.2
- Windows Server 2019,搭载 Windows PowerShell 5.1 和 PowerShell 7.2
- macOS 11,搭载 PowerShell Core 7.2
- Ubuntu 20.04,搭载 PowerShell Core 7.2
安装 PowerShell 扩展
可以从 Visual Studio Code Marketplace 通过单击“安装”按钮来安装 PowerShell 扩展。您也可以从 VS Code 内部安装 PowerShell 扩展,方法是使用键盘快捷键 ⇧⌘X (Windows、Linux Ctrl+Shift+X) 打开“扩展”视图,键入 PowerShell,然后选择 PowerShell 扩展
主要功能
- 语法突出显示
- 高级内置代码片段
- 适用于 cmdlet 等的 IntelliSense
- 问题,由 PowerShell 脚本分析器报告
- 转到定义,适用于 cmdlet、变量、类等
- 查找引用,适用于 cmdlet、变量、类等
- 文档和工作区符号导航
- 基于符号的 大纲视图
- 使用 F8 在当前终端中运行选定的 PowerShell 代码
- 使用 Ctrl + F1 启动光标下符号的在线帮助
- PowerShell 调试器集成
- 可以与调试器交互的扩展终端(尝试
Set-PSBreakpoint
!) - 在主题选择器中可找到的 PowerShell ISE 主题
- 也可以尝试使用 ⇧⌘P (Windows、Linux Ctrl+Shift+P) 的 ISE 模式,然后搜索“启用 ISE 模式”
调试
PowerShell 扩展使用 VS Code 的内置调试界面来调试 PowerShell 脚本和模块。有关调试 PowerShell 的更多信息,请参阅“使用 VS Code”。
多版本支持
您可以按照这些说明配置 PowerShell 扩展,以使用计算机上安装的任何受支持的 PowerShell 版本。
或者从命令面板(⇧⌘P (Windows、Linux Ctrl+Shift+P))运行“PowerShell: 显示会话菜单”命令。
CodeLens 支持
CodeLens 是 VS Code 的一项功能,用于提供可在源代码中显示的可操作上下文信息。
CodeLens 功能包括
-
Pester 运行测试和调试测试。
-
Pester 符号支持
-
函数、变量、类和其他符号引用
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 还提供代码格式化。您可以使用格式化文档命令或 (⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I)) 键盘快捷键调用自动文档格式化。
Pester 集成
Pester 是一个用于运行单元测试以执行的框架,Windows PowerShell 5.1 预装了 Pester 3.40。要更新 Pester 或在其他平台上安装最新版本,请按照 Pester 安装说明进行操作。
Plaster 集成
Plaster 是一个基于模板的文件和项目生成器,用 PowerShell 编写。其目的是简化 PowerShell 模块项目、Pester 测试、DSC 配置等的创建。
PowerShell 扩展允许使用命令面板(⇧⌘P (Windows、Linux Ctrl+Shift+P))中的“PowerShell: 从 Plaster 模板创建新项目”命令创建新的 Plaster 项目。
PowerShell 扩展设置
您可以从文件 > 首选项 > 设置菜单项自定义 VS Code 设置。
您也可以选择位于活动栏左下角的齿轮图标。
您也可以使用键盘快捷键 ⌘, (Windows、Linux Ctrl+,) 打开您的设置。您仍然可以使用命令面板(⇧⌘P (Windows、Linux Ctrl+Shift+P))中的 Preferences: Open User Settings (JSON) 命令,或者通过使用 "workbench.settings.editor"
设置更改默认设置编辑器来打开 settings.json
文件。
转到 用户和工作区设置以获取有关配置 VS Code 设置的更多信息。
Types.ps1xml 和 Format.ps1xml 文件
PowerShell .ps1xml
文件用于扩展类型系统和定义输出格式。有关这些文件的更多信息,请参阅有关 Types.ps1xml 和 Format.ps1xml 的官方 PowerShell 文档。通过安装 Red Hat 的 XML 扩展,您可以在创作 .ps1xml
文件时获得 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-<版本>/examples
要在 VS Code 中打开或查看示例,请从 PowerShell 命令提示符运行以下命令
code (Get-ChildItem ~\.vscode\extensions\ms-vscode.PowerShell-*\examples)[-1]
您也可以使用命令面板(⇧⌘P (Windows、Linux Ctrl+Shift+P))中的“PowerShell: 打开示例文件夹”命令打开示例。
附加资源
PowerShell 文档中有更详细的文章。从“使用 VS Code”开始。
查看故障排除指南以获取常见问题的解答。
有关调试的更多信息,请查看 @keithHill 撰写的关于使用 PowerShell 扩展进行调试的“Hey, Scripting Guy!”两部分博客文章系列:@keithHill
测试新功能并提供反馈
我们鼓励您尽可能尝试预发行版本。当预发行版本可用时,可以从 Marketplace 使用切换到预发行版本按钮进行安装。您可以使用将出现的切换到发行版本按钮切换回扩展的稳定版本。您也可以使用卸载按钮旁边的箭头并选择安装其他版本...来降级到扩展的其他版本。
如果您发现错误,请打开一个 issue 并恢复到稳定版本,以便我们修复它。