Visual Studio Code 中的 PowerShell
PowerShell 是一个基于任务的命令行外壳和脚本语言,构建在 .NET 之上,为任何平台上的管理员提供了强大的工具集。
微软为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 扩展
PowerShell 扩展可以从 Visual Studio Code 市场安装,点击 安装按钮。你也可以在 VS Code 中通过打开 扩展视图来安装 PowerShell 扩展,使用键盘快捷键 ⇧⌘X (Windows, Linux Ctrl+Shift+X),输入 PowerShell, 然后选择 PowerShell 扩展:
主要特性
- 语法高亮
- 高级内置代码片段
- IntelliSense 用于cmdlets等
- 问题 由 PowerShell Script Analyzer 报告
- Go to Definition 用于cmdlets、变量、类等的定义跳转
- Find References 查找cmdlets、变量、类等的引用
- 文档和工作区 Symbol Navigation
- 基于符号的大纲视图
- 在当前终端中使用 F8 运行选定的 PowerShell 代码
- 使用Ctrl + F1启动光标下符号的在线帮助
- PowerShell 调试器 集成
- 一个可以与调试器交互的扩展终端(试试
Set-PSBreakpoint
!) - PowerShell ISE 主题可在 主题选择器 中找到
- 也可以尝试使用ISE模式,通过⇧⌘P (Windows, Linux Ctrl+Shift+P)然后搜索“启用ISE模式”
调试
PowerShell 扩展使用 VS Code 内置的 调试界面 来允许调试 PowerShell 脚本和模块。有关调试 PowerShell 的更多信息,请参阅 使用 VS Code。
多版本支持
你可以通过遵循这些说明来配置PowerShell扩展,以使用你机器上安装的任何受支持的PowerShell版本。
或者从命令面板运行PowerShell: 显示会话菜单命令 (⇧⌘P (Windows, Linux Ctrl+Shift+P)).
CodeLens 支持
CodeLenses 是 VS Code 的一项功能,用于提供可操作的上下文信息,这些信息显示在源代码中。
CodeLens 功能包括:
-
Pester 运行测试 和 调试测试。
-
Pester 符号支持
-
函数、变量、类和其他符号引用
CodeLens 引用支持显示符号在代码中被引用的次数,并允许您跳转到特定的引用。
PSScriptAnalyzer 集成
PSScriptAnalyzer 是一个 PowerShell 模块,为模块和脚本提供静态源代码检查器。PSScriptAnalyzer 包含验证 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 扩展允许使用命令面板中的 PowerShell: 从 Plaster 模板创建新项目 命令创建新的 Plaster 项目 (⇧⌘P (Windows, Linux Ctrl+Shift+P)).
PowerShell 扩展设置
你可以通过文件 > 首选项 > 设置菜单项来自定义VS Code的设置。
你也可以选择位于活动栏左下角的齿轮图标。
你也可以使用键盘快捷键 ⌘, (Windows, Linux Ctrl+,) 来打开你的设置。
你仍然可以通过从命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 使用 Preferences: Open User Settings (JSON) 命令打开 settings.json
文件,或者通过更改默认设置编辑器
使用 "workbench.settings.editor"
设置。
前往用户和工作区设置以获取有关配置VS Code设置的更多信息。
Types.ps1xml 和 Format.ps1xml 文件
PowerShell .ps1xml
文件用于扩展类型系统并定义输出格式。有关这些文件的更多信息,请参阅官方 PowerShell 文档中的 Types.ps1xml 和
Format.ps1xml。在编写 .ps1xml
文件时,您可以通过安装
Red Hat 的 XML 扩展 来获得 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扩展使用来自PowerShell存储库的官方XML模式来处理所有.ps1xml
文件。配置这些模式可以在ps1xml
文件中启用以下功能:
- 语法错误报告
- 模式验证
- 标签和属性补全
- 自动关闭标签
- 符号高亮
- 文档折叠
- 文档符号和大纲
- 重命名支持
- 文档格式化
示例脚本
扩展中包含的示例脚本可以在以下路径找到。
~/.vscode/extensions/ms-vscode.PowerShell-
要在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!两篇博客系列文章:
测试新功能并提供反馈
我们鼓励您尽可能尝试预发布版本。当有预发布版本可用时,可以通过市场使用切换到预发布版本按钮进行安装。您可以通过出现的切换到发布版本按钮切换回扩展的稳定版本。您还可以使用卸载按钮旁边的箭头并选择安装其他版本...来降级到扩展的其他版本。
如果您发现了一个错误,请提交一个问题,并在我们修复时恢复到稳定版本。