本文是由 AI 生成的技术解析与实现示例。虽然所引用的代码和步骤均基于一手信息,但未经笔者在实机上进行运行验证。根据环境或版本的不同,实际运行结果可能会有所差异。
PowerShell 团队正式宣布了长期支持(LTS)版本“PowerShell 7.6”的一般可用性(GA)。本文整理了官方博客中介绍的更新内容、模块更新、内置方法扩展以及破坏性变更等主要话题,并对其组成部分进行了详细解说。
PowerShell 7.6 概述与基础技术
为了与现代 .NET 平台保持紧密集成,PowerShell 7.6 构建于 .NET 10 (LTS) 基础之上。作为一个定位为 LTS 的版本,它是运行生产环境自动化时的推荐版本。
总体而言,引擎、模块以及交互式 Shell 体验的整体可靠性均得到了提升。自预览版阶段起,开发重心就一直放在提高一致性、修复长期存在的问题以及完善跨平台环境下的行为上。
下图展示了支撑 PowerShell 7.6 的基础技术与组成部分之间的关系。
flowchart TD
A["PowerShell 7.6 GA Release"] --> B[".NET 10 LTS 基盘"]
A --> C["核心模块的更新"]
A --> D["引擎与 Shell 功能的改进"]
A --> E["破坏性变更与一致性的提升"]
C --> C1[PSReadLine]
C --> C2[Microsoft.PowerShell.PSResourceGet]
C --> C3[Microsoft.PowerShell.ThreadJob]
D --> D1["增强 Tab 补全与路径补全"]
D --> D2["添加新参数,如 Get-Clipboard 等"]
D --> D3["内置方法 PSForEach / PSWhere"]
核心模块的更新与 Tab 补全的增强
PowerShell 7.6 包含一些主要核心模块的更新,提供了更流畅的操作体验和更丰富的补全功能。
目标模块
PSReadLine
Microsoft.PowerShell.PSResourceGet
Microsoft.PowerShell.ThreadJob
Tab 补全与提供程序功能的改进
为了提升整个 Shell 的交互式操作体验,针对 Tab 补全实施了多项改进。
改进跨提供程序的路径补全
为多个 cmdlet 的参数添加值补全
在更多上下文和作用域中启用补全功能
添加通过模块缩写(短名称)进行补全的功能
现有命令的功能添加与引擎改进
现有的 cmdlet 添加了新参数,从而提升了脚本的可写性与处理效率。
1. 命令的新参数添加
Get-Clipboard:添加了-Delimiter参数,现在在从剪贴板获取内容时可以指定分隔符。Register-ArgumentCompleter -NativeFallback:添加了注册针对原生命令的全面补全(覆盖式补全)的支持功能。New-Item:修改为将-Target参数作为字面量处理。Get-Command:添加了-ExcludeModule参数。Start-Process -Wait:改进了轮询效率。
2. 引擎改进事项
PSForEach()与PSWhere():作为 PowerShell 内部方法Where()和Foreach()的别名,添加了PSForEach()和PSWhere()。SystemPolicy:在 Unix 平台上,将SystemPolicy的公共 API 可视化,同时将其作为 no-op(空操作)处理,以便包含在PowerShellStandard.Library中。X509Certificate2:对DnsNameList进行了更新,修改为使用X509SubjectAlternativeNameExtension.EnumerateDnsNames()方法。NO_COLOR环境变量:修复了控制台主机的 stderr 输出以尊重NO_COLOR环境变量。
此外,在之前的预览版中经过验证的以下功能,已正式迁移至主流功能:
PSFeedbackProviderPSNativeWindowsTildeExpansionPSRedirectToVariablePSSubsystemPluginModel
破坏性变更(Breaking Changes)
为了提高长期的一致性,PowerShell 7.6 包含少量的破坏性变更。在引入时,需要确认其对现有脚本的影响。
Join-Pathcmdlet 的变更:-ChildPath参数已转换为string[]。这使得用户能够指定子路径数组,从而不再需要单独使用-AdditionalChildPath。WildcardPattern.Escape():修复了正确转义孤立反引号(backticks)的问题。GetHelpCommand:删除了跟踪源名称末尾的空格。
使用注意事项
本文介绍的 PowerShell 7.6 新功能与变更点是基于官方博客的调查结果,有关实际运行结果和环境特定的行为,属于【计划在 Windows 环境中确认】及【实机确认前】的状态。在将其实施到生产环境或验证环境时,请务必参考官方文档或发行说明,并进行充分的事前验证。

コメント