PowerShell 7.3 中的新增功能
PowerShell 7.3 是基于 .NET 7.0 构建的下一个稳定版本。
PowerShell 7.3 包括以下功能、更新和中断性变更。
重大更改和改进
- 已在此版本中更新或删除 Windows API 以实现合规性,这表示 PowerShell 7.3 不在 Windows 7 上运行。 虽然不再支持 Windows 7,但以前的版本可以在 Windows 7 上运行。
- 适用于 Hyper-V 的 PowerShell Direct 仅在 Windows 10 版本 1809 及更高版本上受支持。
- 由于 .NET 7 中有意的中断性变更,导致
Test-Connection
中断。 它由 #17018 跟踪 - 将
clean
块作为begin
、process
和end
的对等项添加到脚本块,以便轻松清理资源 (#15177) - 将
$PSStyle.OutputRendering
的默认值更改为“Host” - 使
Out-String
和Out-File
保持字符串输入不变 (#17455) - 将 System.Security.AccessControl.ObjectSecurity 的类型数据定义移至 Microsoft.PowerShell.Security 模块 (#16355)(感谢 @iSazonov!)
- 在此更改之前,用户无需显式导入 Microsoft.PowerShell.Security 模块,即可使用为 System.Security.AccessControl.ObjectSecurity 实例定义的代码属性。
- 在此更改之后,用户需要显式导入 Microsoft.PowerShell.Security 模块,才能使用这些代码属性和代码方法。
Tab 自动补全改进
- PowerShell 7.3 包括默认启用预测性 IntelliSense 的 PSReadline 2.2.6。 有关详细信息,请参阅 about_PSReadLine。
- 修复了为
ValidateScriptAttribute
指定的脚本块中的 Tab 自动补全。 (#14550)(感谢 @MartinGC94!) - 在
break
/continue
后为循环标签添加了 Tab 自动补全 (#16438)(感谢 @MartinGC94!) - 在多个方案中改进哈希表自动补全 (#16498)(感谢 @MartinGC94!)
- 参数展开
Invoke-CimMethod
的 Arguments 参数Get-WinEvent
的 FilterHashtable 参数- CIM cmdlet 的 Property 参数
- 从成员完成方案中删除重复项
- 在网络共享(UNC 路径)自动补全中支持正斜杠 (#17111)(感谢 @sba923!)
- 改进了成员自动补全 (#16504)(感谢 @MartinGC94!)
- 为参数优先考虑 ValidateSet 自动补全,而不是枚举 (#15257)(感谢 @MartinGC94!)
- 为具有类型参数的泛型方法添加了类型推理支持 (#16951)(感谢 @MartinGC94!)
- 改进了类型推理和自动补全 (#16963)(感谢 @MartinGC94!)
- 允许在
ForEach-Object -MemberName
的完成结果中显示方法 - 阻止了返回 void 的表达式的完成(如
([void](""))
) - 允许非默认类构造函数在类完成基于 AST 时显示
- 允许在
- 改进了
$_
的类型推理 (#17716)(感谢 @MartinGC94!) - 修复了 ICollection 的类型推理 (#17752)(感谢 @MartinGC94!)
- 自动补全变量时防止大括号被移除 (#17751)(感谢 @MartinGC94!)
- 为字典的索引表达式添加了自动补全 (#17619)(感谢 @MartinGC94!)
- 修复了属性令牌的类型自动补全 (#17484)(感谢 @MartinGC94!)
- 改进了动态参数 Tab 自动补全 (#17661)(感谢 @MartinGC94!)
- 避免在值前自动补全参数时绑定位置参数 (#17693)(感谢 @MartinGC94!)
改进了错误处理
- 为具有重定向的命令表达式正确设置了
$?
(#16046) - 修复了使用
$PSNativeCommandUseErrorActionPreference
时的强制转换错误 (#15993) - 使本机命令错误处理可以选择性遵守
ErrorActionPreference
(#15897) - 将可执行文件路径指定为非零退出代码 ErrorRecord 的
TargetObject
(#16108)(感谢 @rkeithhill!)
会话和远程处理改进
- 将
-Options
添加到 PSRP over SSH 命令,以允许直接传递 OpenSSH 选项 (#12802)(感谢 @BrannenGH!) - 将
-ConfigurationFile
参数添加到pwsh
以允许使用.pssc
文件中定义的会话配置启动新进程 (#17447) - 添加对在非 Windows 平台上使用
New-PSSessionConfigurationFile
的支持 (#17447)
已更新的 cmdlet
- 将
-HttpVersion
参数添加到 Web cmdlet 中 (#15853)(感谢 @hayhay27!) - 为 Web cmdlet 添加对开放式输入标记的支持 (#16193)(感谢 @farmerau!)
- 修复了
ConvertTo-Json -Depth
以允许最多 100 个 (#16197)(感谢 @KevRitchie!) - 在使用
$using:
表达式调用Invoke-Command
时改进变量处理 (#16113)(感谢 @dwtaber!) - 将
-StrictMode
添加到Invoke-Command
,以允许在本地调用命令时指定严格模式 (#16545)(感谢 @Thomas-Yu!) - 将
clean
块作为begin
、process
和end
的对等项添加到脚本块,以便轻松清理资源 (#15177) - 将
-Amended
开关添加到Get-CimClass
cmdlet (#17477)(感谢 @iSazonov) - 已将
ConvertFrom-Json -AsHashtable
更改为使用有序哈希表 (#17405) - 在发送到
Out-GridView
之前,删除了字符串中的 ANSI 转义序列 (#17664) - 向
New-TimeSpan
添加了 Milliseconds 参数 (#17621)(感谢 @NoMoreFood!) - 显示方法定义和重载时显示可选参数 (#13799)(感谢 @eugenesmlv!)
- 即使当前工作目录不复存在,仍允许执行命令 (#17579)
- 通过
Set-AuthenticodeSignature -TimeStampServer
添加对 HTTPS 的支持 (#16134)(感谢 @Ryan-Hutchison-USAF!) - 使用当前区域性在表中呈现十进制数 (#17650)
- 为 OrderedDictionary 添加有序类型加速器 (#17804)(感谢 @fflaten!)
- 将
find.exe
添加到 Windows 的旧参数绑定行为 (#17715) - 将
-noprofileloadtime
开关添加到 pwsh (#17535)(感谢 @rkeithhill!)
有关完整的更改列表,请参阅 GitHub 存储库中的更改日志。
实验性功能
在 PowerShell 7.3 中,以下实验性功能成为主流:
PSAnsiRenderingFileInfo
- 此功能添加$PSStyle.FileInfo
成员,并启用特定文件类型的着色。PSCleanBlock
- 将clean
块作为begin
、process
和end
的对等项添加到脚本块,以便轻松清理资源。PSAMSIMethodInvocationLogging
- 扩展发送到 AMSI 以供检查的数据,以包括对 .NET 方法成员的所有调用。PSNativeCommandArgumentPassing - PowerShell 现在使用 StartProcessInfo 对象的 ArgumentList 属性,而不是在调用本机可执行文件时重建字符串的旧机制。
PowerShell 7.3.1 将
sqlcmd.exe
添加到 Windows 中使用Legacy
参数传递样式的本机命令列表。PSExec
- 添加新的Switch-Process
cmdlet(别名exec
),为非 Windows 系统提供exec
兼容性。PowerShell 7.3.1 将
exec
别名更改为包装Switch-Process
的函数。 利用该函数,将参数传递给可能错误地绑定到 WithCommand 参数的本机命令。
PowerShell 7.3 引入了以下实验性功能:
- PSNativeCommandErrorActionPreference - 添加
$PSNativeCommandUseErrorActionPreference
变量以使本机命令产生的错误成为 PowerShell 错误。
PowerShell 7.3 删除了以下实验性功能:
- 不再支持
PSNativePSPathResolution
实验性功能。 - 不再支持
PSStrictModeAssignment
实验性功能。
有关实验性功能的详细信息,请参阅使用实验性功能。