PowerShell 7.3 已正式发布,PowerShell 7.3 构建在 .NET 7 之上,作为非 LTS版本支持 18 个月。PowerShell 7.2 仍然是 PowerShell 的 LTS(支持 3 年)版本。
PowerShell 7.3 的主题仍是成为一个出色的 shell 环境,主要带来如下优化(以下的“本机命令”是指不是 PowerShell cmdlet 或函数的可执行文件):
改进本机命令参数传递
在涉及引号时,Windows 和 Linux/macOS 在处理本机命令参数方面存在巨大差异。PowerShell 7.3添加了一项新功能$PSNativeCommandArgumentPassing
来控制 PowerShell 如何将参数传递给本机命令。
使本机命令更像 cmdlet 的另一个方面是错误处理。与 cmdlet 不同,本机命令使用退出代码来传达成功或失败。
本机命令的错误处理一致性
stderr
通常用于错误消息,也用于进度、信息、警告等,因为本机命令没有 PowerShell cmdlet 所具有的丰富流。尽管非零退出代码并不总是表示错误,但本机命令的约定是非零退出代码通常表示错误。
现在有一项新功能$PSNativeCommandUseErrorActionPreference
,允许让 PowerShell 将非零退出代码视为错误。这意味着无论 cmdlet 有错误还是本机命令有非零退出代码,都可以将 $ErrorActionPreference
设置成 Stop
,并让 PowerShell 停止执行。
该功能简化了以前在执行本机命令后必须检查 $LASTEXITCODE
的脚本,或将其包装在辅助函数中的复杂步骤。
有关 PowerShell 7.3 的详细信息可在微软博客中查阅,下一个版本 PowerShell 7.4 将是下一个 LTS 版本,预计明年将在 .NET 8 上构建。