PowerShell 7.2 中的新增功能
PowerShell 7.2 是基于 .NET 6.0 构建的下一个长期服务(LTS)版本。
PowerShell 7.2 包括以下功能、更新和重大更改。
- 适用于大多数支持的 Linux 分发版的新通用安装程序包
- Microsoft Windows 上的更新支持
- 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 版本创建了单独的安装程序包。 通用安装程序包将 8 个不同的包合并为一个包,使 Linux 上的安装更简单。 通用包安装目标分发所需的依赖项,并创建特定于平台的更改以使 PowerShell 正常工作。
针对 Windows 的 Microsoft 更新支持
PowerShell 7.2 添加了对 Microsoft Update 的支持。 启用此功能时,你将在传统的 Windows 更新(WU)管理流中获取最新的 PowerShell 7 更新,无论是使用适用于企业的 Windows 更新、WSUS、SCCM 还是“设置”中的交互式 WU 对话框。
PowerShell 7.2 MSI 包包含以下命令行选项:
USE_MU
- 此属性有两个可能的值:1
(默认值) - 选择通过 Microsoft 更新或 WSUS 进行更新0
- 不要选择通过微软更新或WSUS更新
ENABLE_MU
-
1
(默认)- 选择使用 Microsoft 更新、自动更新或 Windows 更新 -
0
- 不选择使用 Microsoft 更新、自动更新或 Windows 更新
-
实验性功能
以下实验性功能现在是此版本中的主流功能:
-
Microsoft.PowerShell.Utility.PSImportPSDataFileSkipLimitCheck
- 请参阅 Import-PowerShellDataFile Microsoft.PowerShell.Utility.PSManageBreakpointsInRunspace
-
PSAnsiRendering
- 请参阅 about_ANSI_Terminals -
PSAnsiProgress
- 请参阅 about_ANSI_Terminals PSCultureInvariantReplaceOperator
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 建立了一个框架,用于为命令行完成提供预测。 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 更改为 AliasProperty(该属性指向FileSystemInfo.LinkTarget
)(#16165)