Visual Studio Code 中的 PowerShell
PowerShell 是基于 .NET 的基于任务的命令行外壳程序和脚本语言,它为任何平台上的管理员提供强大的工具集。
Microsoft 的 PowerShell 扩展为 Visual Studio Code (VS Code) 提供丰富的语言支持和功能,例如 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 扩展
主要功能
- 语法突出显示
- 高级内置 代码片段
- IntelliSense 用于 cmdlet 等
- 问题 由 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))中的 **首选项:打开用户设置(JSON)** 命令打开 `settings.json` 文件,或者通过 `“workbench.settings.editor”` 设置更改默认设置编辑器。
请访问 用户和工作区设置 了解有关配置 VS Code 设置的更多信息。
Types.ps1xml 和 Format.ps1xml 文件
PowerShell 的 `.ps1xml` 文件用于扩展类型系统和定义输出格式。有关这些文件的更多信息,请参阅 PowerShell 官方文档中的 Types.ps1xml 和 Format.ps1xml。您可以通过安装 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-<version>/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! 两部分博客文章系列
测试新功能并提供反馈
我们建议您尽可能尝试使用预发布版本。当有预发布版本可用时,可以使用 **切换到预发布版本** 按钮从市场安装。您可以使用出现的 **切换到发布版本** 按钮切换回扩展的稳定版本。您也可以使用 **卸载** 按钮旁边的箭头选择 **安装其他版本...** 来降级到扩展的其他版本。
如果您发现错误,请 打开问题 并在我们修复它时还原到稳定版本。