从 PowerShell 7.6 (LTS) GA 发布的官方信息解读亮点与变更点

PowerShellカテゴリを表すパンダのイラスト PowerShell

本文是由 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 环境变量。

此外,在之前的预览版中经过验证的以下功能,已正式迁移至主流功能:

  • PSFeedbackProvider

  • PSNativeWindowsTildeExpansion

  • PSRedirectToVariable

  • PSSubsystemPluginModel

破坏性变更(Breaking Changes)

为了提高长期的一致性,PowerShell 7.6 包含少量的破坏性变更。在引入时,需要确认其对现有脚本的影响。

  • Join-Path cmdlet 的变更-ChildPath 参数已转换为 string[]。这使得用户能够指定子路径数组,从而不再需要单独使用 -AdditionalChildPath

  • WildcardPattern.Escape():修复了正确转义孤立反引号(backticks)的问题。

  • GetHelpCommand:删除了跟踪源名称末尾的空格。

使用注意事项

本文介绍的 PowerShell 7.6 新功能与变更点是基于官方博客的调查结果,有关实际运行结果和环境特定的行为,属于【计划在 Windows 环境中确认】及【实机确认前】的状态。在将其实施到生产环境或验证环境时,请务必参考官方文档或发行说明,并进行充分的事前验证。

参考信息

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

标题和URL已复制