PowerShell 7.2 中的新增功能
PowerShell 7.2 是下一个长期服务 (LTS) 版本,基于 .NET 6.0 构建。
PowerShell 7.2 包括以下功能、更新和重大更改。
- 适用于大多数受支持的 Linux 发行版的新通用安装程序包
- Windows 上的 Microsoft 更新支持
- 新增了 2 个实验性功能
- 改进了本机命令参数传递支持
- ANSI FileInfo 颜色支持
- 改进了 Tab 键自动补全功能
- 包含预测性 IntelliSense 的 PSReadLine 2.1
- 7 个实验性功能升级到主流并删除了 1 项功能
- 将 DSC 与 PowerShell 7 分离,实现未来改进
- 提高可用性的几项重大更改
有关完整的更改列表,请参阅 GitHub 存储库中的更改日志。
安装更新
查看首选操作系统的安装说明:
此外,PowerShell 7.2 支持 ARM64 版本的 Windows 和 macOS 以及 ARM32 和 ARM64 版本的 Debian 和 Ubuntu。
有关支持的操作系统和支持生命周期的最新信息,请参阅 PowerShell 支持生命周期。
适用于 Linux 发行版的新通用安装包
以前,我们为每个受支持的 CentOS、RHEL、Debian 和 Ubuntu 版本创建了单独的安装程序包。 通用安装程序包将八个不同的包合并为一个,从而简化了在 Linux 上的安装过程。 通用包安装目标发行版所需的依赖项,并创建平台特定的更改以使 PowerShell 正常工作。
针对 Windows 的 Microsoft 更新支持
PowerShell 7.2 添加了对 Microsoft 更新的支持。 启用此功能时,你将在传统 Windows 更新 (WU) 管理流中获得最新的 PowerShell 7 更新,无论是包含适用于企业的 Windows 更新、WSUS、SCCM,还是包含设置中的交互式 WU 对话框。
PowerShell 7.2 MSI 包包含以下命令行选项:
USE_MU
- 该属性有两个可能值:1
(默认)- 选择通过 Microsoft 更新或 WSUS 进行更新0
- 不选择通过 Microsoft 更新或 WSUS 进行更新
ENABLE_MU
1
(默认)- 选择使用 Microsoft 更新、自动更新或 Windows 更新0
- 不选择使用 Microsoft 更新、自动更新或 Windows 更新
实验性功能
以下试验性功能现在是此版本中的主要功能:
Microsoft.PowerShell.Utility.PSImportPSDataFileSkipLimitCheck
- 请参阅 Import-PowerShellDataFileMicrosoft.PowerShell.Utility.PSManageBreakpointsInRunspace
PSAnsiRendering
- 请参阅 about_ANSI_TerminalsPSAnsiProgress
- 请参阅 about_ANSI_TerminalsPSCultureInvariantReplaceOperator
PSNotApplyErrorActionToStderr
PSUnixFileStat
此版本中添加了以下实验性功能:
PSNativeCommandArgumentPassing - 启用此实验性功能后,PowerShell 将使用 StartProcessInfo 对象的 ArgumentList 属性,而不是我们目前在调用本机可执行文件时重建字符串的机制。 此功能添加了一个新的自动变量
$PSNativeCommandArgumentPassing
,它支持你在运行时选择行为。PSAnsiRenderingFileInfo - 允许对文件信息进行 ANSI 颜色自定义。
PSLoadAssemblyFromNativeCode - 公开 API 以便能从本机代码加载程序集。
有关实验性功能的详细信息,请参阅使用实验性功能。
改进了 Tab 键自动补全功能
PowerShell 7.2 对 Tab 键自动补全功能进行了多项改进。 这些更改包括 bug 修复并提高可用性。
- 修复了关于*主题的未本地化的 Tab 自动补全功能 (#15265)(感谢 @MartinGC94)
- 修复了自动补全功能中被视为位置参数的 splatting (#14623)(感谢 @MartinGC94)
- 为基于评论的帮助关键字添加了自动补全功能 (#15337)(感谢 @MartinGC94)
- 为 Requires 语句添加了自动补全功能 (#14596)(感谢 @MartinGC94)
- 为 Format-* cmdlet 的 View 参数添加了 Tab 自动补全功能 (#14513)(感谢 @iSazonov)
PSReadLine 2.1 预测性 IntelliSense
PSReadLine 2.1 引入了 CommandPrediction
API,用于建立一个提供命令行自动补全预测的框架。 该 API 使用户能够基于用户历史记录中的匹配预测来发现、编辑和执行完整命令。
预测性 IntelliSense 默认禁用。 若要启用预测,请运行以下命令:
Set-PSReadLineOption -PredictionSource History
将 DSC 与 PowerShell 7 分离,实现未来改进
PSDesiredStateConfiguration 模块已从 PowerShell 7.2 包中删除,现已发布到 PowerShell 库。 这样可以独立于 PowerShell 开发 PSDesiredStateConfiguration 模块,用户可以在其环境中混合使用 PowerShell 和 PSDesiredStateConfiguration 版本。 从 PowerShell 库安装 PSDesiredStateConfiguration 2.0.5:
Install-Module -Name PSDesiredStateConfiguration -Repository PSGallery -MaximumVersion 2.99
重要
请确保包含参数 MaximumVersion,或者安装 PSDesireStateConfiguration 版本 3(或更高版本),其中包含显著差异。
引擎更新
- 添加
LoadAssemblyFromNativeMemory
函数以通过 awakecoding 拉取请求从本机 PowerShell 主机加载内存中的程序集·(#14652)
重大更改和改进
- PSDesiredStateConfiguration 已从 PowerShell 7.2 包中删除
- 使 PowerShell Linux deb 和 RPM 包成为通用包 (#15109)
- 实验性功能
PSNativeCommandArgumentPassing
:将 ArgumentList 用于本机可执行文件调用 (#14692) - 确保为脚本 cmdlet 的所有输出设置了
-PipelineVariable
(#12766) ConvertTo-Json
超出 -Depth 值时发出警告 (#13692)- 删除 -Directory 开关 CL-General 的别名 D (#15171)
- 改善对可变值类型的检测 (#12495)
- 在锁定状态下限制 NoLanguage 模式中的
New-Object
(#14140) - 执行策略绕过配置之前强制执行 AppLocker 拒绝配置 (#15035)
- 将
FileSystemInfo.Target
从 CodeProperty 更改为指向FileSystemInfo.LinkTarget
的 AliasProperty (#16165)