PowerShell 7.6 中的新增功能

PowerShell 7.6-preview.6 包括以下功能、更新和重大更改。 PowerShell 7.6 基于 .NET 10.0.0 GA 版本构建。

有关更改的完整列表,请参阅 GitHub 存储库中的 CHANGELOG

更新的模块

PowerShell 7.6-preview.6 包含以下更新的模块:

  • Microsoft.PowerShell.PSResourceGet v1.2.0-preview5
  • PSReadLine v2.4.4-beta4
  • Microsoft.PowerShell.ThreadJob v2.2.0
  • ThreadJob v2.1.0

ThreadJob 已重命名为 Microsoft.PowerShell.ThreadJob 模块。 模块的功能没有区别。 为了确保使用旧名称的脚本向后兼容, ThreadJob v2.1.0 模块是指向 Microsoft.PowerShell.ThreadJob v2.2.0 的代理模块。

重大更改

  • 修复 WildcardPattern.Escape 以正确转义单独的反撇号 (#25211)(谢谢 @ArmaanMcleod!))
  • -ChildPath 参数转换为 string[] cmdlet 的 Join-Path (#24677)(谢谢 @ArmaanMcleod!))
  • 从事件源名称中删除尾随空格 (#24192) (谢谢 @MartinGC94!)

Tab 自动补全改进

  • 将别名正确扩展为其解析后的实际命令(#26571)(谢谢)@kilasuit!)
  • 在参数补全功能中使用参数 HelpMessage 作为工具提示 (#25108) (谢谢) @jborean93!)
  • 从完成结果中删除重复模块 (#25538) (谢谢 @MartinGC94!)
  • ArrayLiteralAstParenExpressionAst中分配的变量添加代码补全功能(#25303)(感谢@MartinGC94!))
  • 修复 env/function 变量的选项卡补全 (#25346) (谢谢) @jborean93!)
  • 更新命名和语句块类型推断,不将 AssignmentStatements 和递增/递减运算符视为其输出的一部分 (#21137)(谢谢 @MartinGC94!))
  • -PropertyTypeNew-ItemProperty) 添加参数补全器 (谢谢)@ArmaanMcleod!)
  • -NounGet-Command 参数添加完成单引号/双引号支持 (#24977)(谢谢 @ArmaanMcleod!))
  • -PSEditionGet-Module 参数添加完成单引号/双引号支持 (#24971)(谢谢 @ArmaanMcleod!)
  • 将 AnalysisCache 中的 InvalidCommandNameCharacters 转换为 SearchValues<char> 以进行更高效的字符搜索 (#24880)。谢谢 @ArmaanMcleod!)
  • 将补全器中的 s_charactersRequiringQuotes 转换为 SearchValues<char> 以实现更高效的字符搜索 (#24879)(谢谢 @ArmaanMcleod!)
  • 将带有无效路径/文件名的调用更新为 IndexOfAny(),以便于使用 SearchValues<char> 进行更高效的字符搜索([#24896][24896])(感谢 @ArmaanMcleod!))
  • char[]数组替换为CompletionRequiresQuotes中的缓存SearchValues<char>#24907)(谢谢@ArmaanMcleod!))
  • 使用单个帮助程序方法在 VerbStrictModeVersionScopePropertyType 参数完成器中添加引号处理 (#24839)(谢谢 @ArmaanMcleod!)
  • 使用提供程序和空格修复了共享补全问题 (#19440)(谢谢 @MartinGC94!)
  • 改进变量类型推理 (#19830) (谢谢) @MartinGC94!)
  • 为哈希表密钥补全添加工具提示(#17864)(谢谢 @MartinGC94!)
  • 修复经典函数中参数的类型推理 (#25172) (谢谢) @MartinGC94!)
  • 改进工作分配类型推理 (#21143) (谢谢 @MartinGC94!)
  • 在推断变量 (#25224) 时排除同CommandAst一范围内的 OutVariable 赋值 (谢谢)@MartinGC94!)
  • 修复了脚本要求失败时的参数补全问题 (#17687)(谢谢 @MartinGC94!)
  • 改进了属性参数的补全功能 (#25129)(谢谢 @MartinGC94!)
  • 修复了依赖于脚本块中的伪绑定的补全功能 (#25122)(谢谢 @MartinGC94!)
  • 不要完成重复的命令名称 (#211113) (谢谢 @MartinGC94!)
  • 为通过命令重定向分配的变量添加补全(#25104)(谢谢)@MartinGC94!)
  • 修复了 TypeName.GetReflectionType(),使其在 TypeName 实例表示 GenericTypeName 中的泛型类型定义时能够正常工作 (#24985)
  • 更新变量/属性赋值的完成机制,使其可以回退到类型推断(#21134)(感谢@MartinGC94!))
  • 处理重定向命令的类型推理 (#21131) (谢谢) @MartinGC94!)
  • 使用 Get-Help 方法查找具有正确区域设置的 about_*.help.txt 文件以进行补全 (#24194)(谢谢 @MartinGC94!)
  • 修复了在 Do 循环内分配的变量补全问题 (#25076)(感谢 @MartinGC94!)
  • 修复了当路径返回自身而不是其子路径时的提供程序路径补全问题 (#24755)(感谢 @MartinGC94!))
  • 能够在不指定范围的情况下补全作用域变量 (#20340) (谢谢 @MartinGC94!)
  • 修复了在非文件系统提供程序中使用通配符完成路径时结果不完整的问题 (#24757)(感谢 @MartinGC94!))

Cmdlet 改进

  • 将参数添加到 -DelimiterGet-Clipboard#26572) (谢谢) @MartinGC94!)
  • 通过将过时的 BinaryFormatter 替换为自定义实现(#25497)来修复 Out-GridView(谢谢) @mawosoft!)
  • 改进 Web cmdlet 中的详细和调试日志记录级别的消息传递 (#25510) (谢谢) @JustinGrote!)
  • 改进 Web cmdlet 请求和响应的调试日志记录 (#25479) (谢谢) @JustinGrote!)
  • 添加参数 Register-ArgumentCompleter -NativeFallback,以支持为本机命令注册通用补全器(#25230
  • -Target中将New-Item视为字面意思(#25186)(谢谢@GameMicrowave!))
  • 更新 Windows 上包管理器可执行文件的 PATH 环境变量(#25847
  • 更新 Get-Service 以在检索服务的非关键属性时忽略常见错误(#24245)(谢谢 @jborean93!)
  • Join-String Argument Completer 添加单引号/双引号支持 (#25283) (谢谢) @ArmaanMcleod!)
  • 删除IsScreenReaderActive()检查 (ConsoleHost#26118
  • $using改进 (Invoke-Command) 中的表达式支持 (谢谢)@jborean93!)
  • 将默认反馈提供程序超时从 300 毫秒更改为 1000 毫秒(#25910
  • [bigint] 强制转换中添加对千位分隔符的支持(#25396)(感谢@AbishekPonmudi!))
  • 为重载跟踪添加 MethodInvocation 跟踪 (#21320) (谢谢) @jborean93!)
  • 修复了忽略数组字面量中的注释的问题 (ConvertFrom-Json) (#26050) (感谢)
  • 修复 -Debug 以不触发 ShouldProcess 提示(#26081
  • 修复 Write-Host 以尊重 OutputRendering = PlainText (#21188)
  • 修复了魔法范围(#25726)的调试跟踪错误,谢谢@jborean93!)
  • 修复路径中包含双引号字符的问题(#25631)(感谢@MartinGC94!))
  • 修复高级函数的通用参数 -ProgressAction#24591) (谢谢) @cmkb3!)
  • 修复了从多个线程将进度记录写入控制台时的NullReferenceException问题 (#25440) (谢谢@kborowinski!))
  • 在 (FileSystemProvider.CreateDirectory) 中使用绝对路径 (谢谢)@Tadas!)
  • 使继承的保护性内部实例成员在 PowerShell 类的作用域中可访问(#25245)(谢谢)@mawosoft!)。
  • 添加内部方法以检查首选项 (#25514) (谢谢) @iSazonov!)
  • 将参数添加到 -ExcludeModuleGet-Command#18955) (谢谢) @MartinGC94!)
  • 列出备用数据流时返回正确的 FileName 属性 Get-Item#18019) (谢谢) @kilasuit!)
  • 修复了 Get-ItemProperty 以报告强制转换异常的非终止错误 (#21115)(谢谢 @ArmaanMcleod!)
  • 修复了关于 q 处理 XmlNode 对象方法的一个 bug (#24669)(谢谢 @brendandburns!)
  • 传递无效目录名称时 New-Item -Force 出错 (#24936) (谢谢) @kborowinski!)
  • 允许 Start-Transcript 使用 $Transcript 包装的 PSObject 字符串来指定转录路径(#24963)(感谢 @kborowinski!))
  • 提高 Start-Process -Wait 投票效率 (#24711) (谢谢) @jborean93!)
  • 通过短名称添加模块完成功能 (#20330)(谢谢 @MartinGC94!)

引擎改进

  • 修复 API CompletionCompleters.CompleteFilename() 中导致 null 引用异常的回归(#26487
  • 创建子 ssh 进程后关闭管道客户端句柄 (#26564
  • 更新 PSDiagnostics 模块以在 PowerShell 7 中管理 PowerShellCore 提供程序(#25590
  • 允许使用环境变量 POWERSHELL_DIAGNOSTICS_OPTOUT#26086)选择退出命名管道侦听器
  • 确保仅在令牌验证期间设置套接字超时 (#26066
  • 修复 stderr 控制台主机的输出以确保遵循 NO_COLOR#24391
  • 更新 PSRP 协议以弃用较新的客户端和服务器之间的会话密钥交换 (#25774
  • ssh修复默认 Runspace 不可用时路径检查 SSHConnectionInfo#25780) (谢谢)@jborean93!)
  • 为本机命令退出代码添加十六进制格式 (#21067) (谢谢) @sba923!)
  • 修复变量类型推理中的无限循环崩溃 (#25696) (谢谢) @MartinGC94!)
  • 添加 PSForEachPSWhere 作为 PowerShell 内部方法 WhereForeach 的别名(#25511)(感谢 @powercode!))
  • 向遥测收集列表添加了 AIShell 模块(#24747
  • EnumSingleTypeConverter 中添加了辅助函数以将枚举名称作为数组获取(#17785)(感谢 @fflaten!))
  • 更新 X509Certificate2DnsNameList 以使用X509SubjectAlternativeNameExtension.EnumerateDnsNames()方法 (#24714) (谢谢)@ArmaanMcleod!)
  • 将带有空异常消息的 ErrorRecord 字符串化为空字符串 (#24949)(谢谢 @MatejKafka!)
  • PipelineStopToken 添加到 Cmdlet 以在管道停止时发出信号 (#24620)(谢谢 @jborean93!)
  • WldpCanExecuteFile 后回退到 AppLocker (#24912)
  • 在完成方法参数所需的类型转换后,将 .NET 方法调用日志记录移到该步骤之后 (#25022)
  • 修复变量类型推理中的无限循环 (#25206) (谢谢) @MartinGC94!)
  • 删除旧的模糊建议并修复本地脚本文件名建议 (#25177
  • 使 SystemPolicy 公共 API 在 Unix 平台上可见,但不执行操作,以便将其包含在 PowerShellStandard.Library#25051)中。
  • 使用 -NoNewWindow 启动进程时明确设置标准句柄 (#25061)
  • 修复了变量扩展工具提示并包括了描述 (#25112)(谢谢 @jborean93!)
  • 在完成使用语句的相对路径时使用脚本文件路径 (#20017)(谢谢 @MartinGC94!)
  • 允许 DSC 通过 OS 体系结构转换层进行分析 (#24852) (谢谢) @bdeb1337!)

实验性功能

PowerShell 7.6-preview.6 包括对实验功能的以下更改。

以下功能已转换为主流功能:

此版本包括以下实验性功能: