PowerShell 7.0 新增内容

PowerShell 7.0 是一个开源、跨平台(Windows、macOS 和 Linux)的 PowerShell 版本,旨在管理异构环境和混合云。

在本版本中,我们引入了多项新功能,包括:

  • 流水线并行化 ForEach-Object -Parallel
  • 新操作员:
    • 三元算符: a ? b : c
    • 管道链操作员: || 以及 &&
    • 零条件算符: ????=
  • 一个简化且动态的误差视图和 Get-Error 指令小工具,便于错误调查
  • 一个兼容层,允许用户在隐式的 Windows PowerShell 会话中导入模块
  • 自动新版本通知
  • 直接从 PowerShell 7 调用 DSC 资源的能力(实验阶段)

想查看完整的功能和修复列表,请查看 更新日志

我在哪里可以安装PowerShell?

PowerShell 7 目前支持 x64 上的以下作系统,包括:

  • Windows 8.1 和 10
  • Windows Server 2012、2012 R2、2016 和 2019
  • macOS 10.13+
  • 红帽企业Linux(RHEL)/ CentOS 7
  • Fedora 30+
  • Debian 9
  • Ubuntu LTS 16.04+
  • Alpine Linux 3.8+

此外,PowerShell 7.0 支持 Debian、Ubuntu 和 ARM64 的 ARM32 和 ARM64 版本 Alpine Linux。

请查看你偏好的作系统Windows、macOSLinux的安装说明。

虽然没有官方支持,但社区也提供了 Arch 和 Kali Linux 的软件包。

注释

Debian 10 和 CentOS 8 目前不支持 WinRM 远程处理。 关于如何设置基于SSH的远程访问,请参见 PowerShell Remoting over SSH

有关支持作系统和支持生命周期的更多 up-to信息,请参见 PowerShell支持生命周期

运行PowerShell 7

PowerShell 7 是单独安装到与 Windows PowerShell 不同的目录中。 这使你能够将PowerShell 7与Windows PowerShell 5.1并列运行。 对于PowerShell 6.x,PowerShell 7是一个原地升级,移除了PowerShell 6.x。

  • PowerShell 7 已安装于 %programfiles%\PowerShell\7
  • %programfiles%\PowerShell\7 文件夹已添加到 $env:PATH

PowerShell 7安装包升级了之前版本的PowerShell 6.x:

  • Windows上的PowerShell 6.x: %programfiles%\PowerShell\6 被替换为 %programfiles%\PowerShell\7
  • Linux: /opt/microsoft/powershell/6 被 替换为 /opt/microsoft/powershell/7
  • macOS: /usr/local/microsoft/powershell/6 被替换为 /usr/local/microsoft/powershell/7

注释

在 Windows PowerShell 中,启动 PowerShell 的可执行文件命名 powershell.exe为 。 在版本 6 及以上版本中,执行文件名称更改为支持并排执行。 启动PowerShell 7的新可执行文件名称是 pwsh.exe。 预览构建保留在原位 pwsh-preview ,而非 pwsh 7-preview目录下。

改进了与 Windows PowerShell 的向下兼容性

PowerShell 7.0标志着向.NET Core 3.1的转变,使得与现有Windows的PowerShell模块实现了显著的向后兼容性。 这包括许多Windows上需要图形界面功能的模块,如 Out-GridViewShow-Command,以及许多作为Windows一部分自带的角色管理模块。

对于 Windows,新增了一个开关参数 UseWindowsPowerShellImport-Module 该交换在 PowerShell 7 中创建了一个代理模块,使用本地 Windows PowerShell 进程隐式运行该模块中包含的 cmdlet。 关于 Import-Module的更多信息。

有关哪些 Microsoft 模块支持 PowerShell 7.0 的更多信息,请参见 模块兼容性表

并行执行加入 ForEach-Object

ForEach-Object该 cmdlet 在集合中循环项目,现在内置了与新并参数的并行性。

默认情况下,并行脚本块使用启动并行任务的调用者当前的工作目录。

本示例从本地Windows机器上的5个系统日志中检索了50,000条日志条目:

$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'

$logEntries = $logNames | ForEach-Object -Parallel {
    Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5

$logEntries.Count

50000

并行参数指定了每个输入日志名称并行运行的脚本块。

新的 ThrottleLimit 参数限制了同一时间并行运行的脚本块数量。 默认值为 5。

使用变量 $_ 表示脚本块中的当前输入对象。 使用 $using: 作用域将变量引用传递给正在运行的脚本块。

关于 ForEach-Object的更多信息。

三元运算符

PowerShell 7.0 引入了一个三元运算符,其行为类似于简化 if-else 语句。 PowerShell 的三进制运算符紧密模仿了 C# 三进制运算符的语法:

<condition> ? <if-true> : <if-false>

条件表达式总是被评估,并将结果转换为 布尔值 以确定下一步要评估哪个分支:

  • 如果 <if-true> 表达式为 true,则执行 <condition> 表达式
  • 如果 <if-false> 表达式为 false,则执行 <condition> 表达式

例如:

$message = (Test-Path $path) ? "Path exists" : "Path not found"

在这个例子中,如果路径存在,则显示路径 存在 。 如果路径不存在,则显示 路径未找到

关于 IF的更多信息。

管道链运营商

PowerShell 7 实现 && 了 和 || 作符,可以条件链式管道。 这些作符在PowerShell中被称为“流水线链作符”,类似于shell bashzsh中的AND和OR列表,以及Windows命令壳cmd.exe()中的条件处理符号。

如果左侧管道成功,&& 运算符将执行右侧管道。 相反,如果左侧管道失败,|| 运算符将执行右侧管道。

注释

这些运算符使用 $?$LASTEXITCODE 变量来确定管道是否失败。 这样,就可以将它们与本机命令一起使用,而不仅仅是 cmdlet 或函数。

此时,第一个命令成功,第二个命令执行:

Write-Output 'First' && Write-Output 'Second'
First
Second

这里,第一个命令失败,第二个命令未被执行:

Write-Error 'Bad' && Write-Output 'Second'
Write-Error: Bad

这里,第一个命令成功,第二个命令未执行:

Write-Output 'First' || Write-Output 'Second'
First

这里,第一个命令失败,因此执行第二个命令:

Write-Error 'Bad' || Write-Output 'Second'
Write-Error 'Bad'
Second

关于 管道链操作员的更多信息。

零聚合、赋值与条件算符

PowerShell 7 包含 Null 合并算子 ??、Null 条件赋值 ??=、Null 条件成员访问算子 ?.?[]

零聚合算符??

如果左作子不是空,空聚算子 ?? 会返回它的值。 否则,它将计算右侧作数并返回其结果。 如果左侧操作数的计算结果为非 null,则 ?? 运算符不会计算其右侧操作数。

$x = $null
$x ?? 100
100

在以下示例中,将不评估右手作数:

[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020

空条件赋值算符??=

空条件赋值算子 ??= 只有在左作数值为空时,才会将其右手作数的值分配到左作数。 如果左侧操作数的计算结果为非 null,则 ??= 运算符不会计算其右侧操作数。

$x = $null
$x ??= 100
$x
100

在下面的例子中,右手作数不被评估:

[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020

空条件成员访问算符 ? 和?[](实验性)

注释

这是一个名为 PSNullConditionalOperators的实验性功能。 更多信息请参见 “使用实验特征”。

空条件算子只有在该作数值非空时,才允许成员访问 ?.或元素访问 ?[],该作数;否则返回空值。

注释

由于 PowerShell 允许 ? 成为变量名称的一部分,因此使用这些运算符需要对变量名称进行正式规范。 所以必须在变量名附近使用 {} ,比如 ${a}? 是变量名 ${a?}的一部分时。

在以下示例中,返回成员属性 Status 的值:

$Service = Get-Service -Name 'bits'
${Service}?.status
Stopped

以下示例返回空,无需尝试访问成员名 Status

$service = $Null
${Service}?.status

同样,使用 ?[],返回元素的值:

$a = 1..10
${a}?[0]
1

当作数为空时,该元素未被访问,返回空值:

$a = $null
${a}?[0]

更多信息 请见About_Operators

新视图 简明视图和 cmdlet Get-Error

PowerShell 7.0 通过新的默认视图 ConciseView 增强了错误消息的显示,以提升交互式和脚本错误的可读性。 视图可通过偏好变量 $ErrorView选择。

ConciseView中,如果错误不是脚本或解析器错误,那么它会显示一条单行错误信息:

Get-Childitem -Path c:\NotReal
Get-ChildItem: can't find path 'C:\NotReal' because it doesn't exist

如果错误发生在脚本执行过程中或是解析错误,PowerShell 会返回包含错误的多行错误消息、指针和错误信息,显示错误在该行的位置。 如果终端不支持 ANSI 颜色脱离序列(VT100),那么颜色不会显示。

脚本中的错误显示

PowerShell 7 的默认视图是 ConciseView。 之前的默认视图是 NormalView ,你可以通过设置偏好变量 $ErrorView来选择。

$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView

注释

新增$Host.PrivateData了一个属性 ErrorAccentColor,以支持更改错误消息的重音颜色。

新的 cmdlet Get-Error 在需要时提供完全限定错误的完整详细视图。 默认情况下,命令小词会显示最后一次错误的完整细节,包括内部异常。

Get-Error 显示

Get-Error该 cmdlet 支持通过内置变量 $Error来自流水线的输入。 Get-Error 显示所有管道错误。

$Error | Get-Error

Get-Error cmdlet 支持 最新 参数,允许你指定当前会话中希望显示多少错误。

Get-Error -Newest 3 # Displays the lst three errors that occurred in the session

关于 Get-Error 的更多信息。

新版本通知

PowerShell 7 通过更新通知提醒用户 PowerShell 有更新。 PowerShell 每天查询一次联机服务,以确定是否提供较新版本。

注释

更新检查发生在给定24小时内的第一次会话中。 出于性能考虑,更新检查在会话开始后3秒开始。 该通知仅在后续会话开始时显示。

默认情况下,PowerShell 会根据其版本/分支订阅两种不同的通知通道之一。 支持的通用(GA)版本的PowerShell仅返回更新后的GA版本通知。 预览版和候选版(RC)发布通知预览版、RC版和通用版的更新。

可以使用 $Env:POWERSHELL_UPDATECHECK 环境变量更改更新通知行为。 支持以下值:

  • 默认 和不定义是一样的 $Env:POWERSHELL_UPDATECHECK
    • GA 版本通知 GA 版本的更新
    • 预览版/RC 版本通知 GA 版本和预览版的更新
  • 关闭 会关闭更新通知功能
  • LTS 仅通知长期服务(LTS)GA版本的更新

注释

环境变量 $Env:POWERSHELL_UPDATECHECK 直到第一次被设置时才会存在。

要设置仅发布 LTS 版本通知:

$Env:POWERSHELL_UPDATECHECK = 'LTS'

要将版本通知设置为以下 Default 行为:

$Env:POWERSHELL_UPDATECHECK = 'Default'

关于 更新通知的更多信息。

新的DSC资源支持,包含 Invoke-DSCResource(实验性)

注释

这是一个名为 PSDesiredStateConfiguration.InvokeDscResource的实验性功能。 更多信息请参见 “使用实验特征”。

Invoke-DscResource cmdlet 运行指定 PowerShell 期望状态配置(DSC)资源的方法。

该命令子直接调用 DSC 资源,无需创建配置文件文档。 利用该 cmdlet,配置管理产品可以通过使用 DSC 资源来管理 Windows 或 Linux。 该命令还支持在 DSC 引擎运行时调试资源。

该命令调用名为 WindowsProcess 的资源的 Set 方法,并提供启动指定 Windows 进程所需的 PathArguments 属性。

Invoke-DscResource -Name WindowsProcess -Method Set -ModuleName PSDesiredStateConfiguration -Property @{
  Path = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
  Arguments = ''
}

欲了解更多关于 Invoke-DSCResource的信息。

突破性变更与改进

重大更改

  • 更新通知支持LTS和默认频道(#11132)
  • 更新 Test-Connection,使其更像Windows PowerShell(#10697)(谢谢) @vexx32!)
  • 保全美元? 用于ParenExpression、SubExpression和ArrayExpression(#11040)
  • 在 Start-Job 中将工作目录设置为当前目录(#10920)(谢谢) @iSazonov!)
  • 让$PSCulture始终反映会期内文化的变化(#10138)(谢谢) @iSazonov!)

引擎更新与修复

  • 远程场景断点API改进(#11312)
  • 修复PowerShell类定义泄漏到另一个运行空间(#11273)
  • 修复由 7.0.0-Preview1 (#11258) 中添加的 FirstOrDefault 原语引起的格式倒退
  • PS7遥测中需要跟踪的额外Microsoft模块(#10751)
  • 将批准功能非实验性(#11303)
  • 如适用,更新简明视图以使用TargetObject(#11075)
  • 修复 CompletionCompleters 公共方法中的 NullReferenceException (#11274)
  • 修复非Windows平台上的公寓线程状态检查(#11301)
  • 更新设置PSModulePath以连接进程和机器环境变量(#11276)
  • 将 .NET Core 推至 3.1.0 (#11260)
  • 修复$env:PATH (#11141)前方$PSHOME检测问题
  • 允许pwsh继承$env:PSModulePath,并启用 powershell.exe 正确启动(#11057)
  • 迁移至.NET Core 3.1预览版1 (#10798)
  • 在文件系统提供者中重构解析标签检查(#10431)(谢谢) @iSazonov!)
  • 在脚本日志中用0x23CE字符替换CR和新行(#10616)
  • 通过取消注册 AppDomain.CurrentDomain.ProcessExit (#10626)中的事件处理程序来修复资源泄漏
  • 添加 ActionPreference.Break 支持,以便在生成 Debug、Error、Information、Progress、Verbose 或 Warning 消息时进入调试器(#8205)(谢谢) @KirkMunro!)
  • 在PowerShell中启用启动控制面板插件,但不指定扩展名.CPL。 (#9828)
  • 支持 -split作符中的负数(#8960)(谢谢) @ece-jacob-scott!)

通用指令更新与修复

  • 修复 Raspbian 上在 UnixStat 实验功能中设置文件更改日期的问题(#11313)
  • 将 -AsPlainText 加到 ConvertFrom-SecureString(#11142)
  • 新增了WindowsPS版本检查以支持WinCompat(#11148)
  • 修复某些WinCompat场景中的错误报告(#11259)
  • 添加本地二进制解析器(#11032)(谢谢) @iSazonov!)
  • 更新字符宽度计算以正确尊重中日韩字符(#11262)
  • 为macOS添加 Unblock-File(#11137)
  • 修复 Get-PSCallStack 中的回归问题(#11210)(谢谢) @iSazonov!)
  • 使用Job cmdlet(#11194)时移除ScheduledJob模块的自动加载
  • 将 OutputType 添加到 Get-Error 命令子中并保留原始类型名(#10856)
  • 修复 SupportsVirtualTerminal 属性中的空引用(#11105)
  • Get-WinEvent(#10648)添加限值检查(谢谢) @iSazonov!)
  • 修复命令运行时,让 StopUpStreamCommandsException 不会在 -ErrorVariable (#10840) 中被填充
  • 将输出编码设置为 [Console]::OutputEncoding 用于本地命令 (#10824)
  • 示例中支持多行代码块(#10776)(谢谢) @Greg-Smulko!)
  • 给 Select-String cmdlet (#10943) 添加 Culture 参数(谢谢) @iSazonov!)
  • 修复带有尾部反斜线的工作目录路径 Start-Job (#11041)
  • ConvertFrom-Json:默认展开集合(#10861)(谢谢) @danstur!)
  • 使用大小写区分的哈希表 Group-Object -CaseSensitive 和 -AsHashtable 交换机的 cmdlet(#11030)(谢谢) @vexx32!)
  • 在重建路径以获得正确外壳时枚举文件失败时处理异常(#11014)
  • 修正简缩视图,显示活动而非 myCommand(#11007)
  • 允许网页命令串忽略HTTP错误状态(#10466)(谢谢) @vdamewood!)
  • 修复多个 CommandInfo 与 Get-Command 的管道问题(#10929)
  • 重新添加 Get-Counter Windows(#10933)cmdlet。
  • 让 ConvertTo-Json 将[AutomationNull]::Value和[NullString]::Value视为$null(#10957)
  • 移除IPv6地址中的括号以进行SSH远程通信(#10968)
  • 修复发送到PWSH的命令只是空白时崩溃(#10977)
  • 新增跨平台 Get-Clipboard 和 Set-Clipboard(#10340)
  • 修复设置文件系统对象的原始路径不包含额外的尾部斜杠(#10959)
  • ConvertTo-Json 支持$null(#10947)
  • 在Windows上重新添加 Out-Printer 命令(#10906)
  • 用空白位修复 Start-Job -WorkingDirectory(#10951)
  • 在PSConfiguration.cs (#10963) 中获得空值时返回默认值(谢谢) @iSazonov!)
  • 将 IO 异常处理为非终止异常(#10950)
  • 添加 GraphicalHost 汇编以启用 Out-GridView、Show-Command 和 Get-Help -ShowWindow(#10899)
  • 通过 Get-HotFix(#10852)的管道获取ComputerName(谢谢) @kvprasoon!)
  • 修正参数的标签补全,使其显示可用常见参数(#10850)
  • 修复 GetCorrectCasedPath() 以先检查是否有系统文件条目返回,然后再调用 First() (#10930)
  • 在 Start-Job 中将工作目录设置为当前目录(#10920)(谢谢) @iSazonov!)
  • 将 TabExpand2 改为不要求 -CursorColumn,并视为 $InputScript.Length (#10849)
  • 处理主机无法返回屏幕行或列的情况(#10938)
  • 修复不支持重音色的主机使用点缀色的问题(#10937)
  • 重新添加 Update-List 命令(#10922)
  • 更新 Clear-RecycleBin 的 FWLink ID (#10925)
  • 在标签完成时,如果无法读取文件属性,请跳过文件(#10910)
  • Windows Clear-RecycleBin 补充(#10909)
  • 添加 $env:__SuppressAnsiEscapeSequences 控制是否在输出中包含VT转义序列(#10814)
  • 添加 -NoEmphasize 参数来给输出 Select-String 颜色(#8963)(谢谢) @derek-xia!)
  • 重新添加 Get-HotFix cmdlet(#10740)
  • 让 Add-Type 在托管PowerShell的应用程序中可用(#10587)
  • 在 LanguagePrimitives.IsNullLike() (#10781) 中使用更有效的评估顺序 @vexx32!)
  • 改进 Format-Hex 中混合收集管道输入和管道输入流的处理(#8674)(谢谢) @vexx32!)
  • 当值与预期类型不符时,请在SSHConnection的哈希表中使用类型转换(#10720)(谢谢) @SeeminglyScience!)
  • 修复 Get-Content -ReadCount 0 行为,-TotalCount 设置(#10749)(谢谢) @eugenesmlv!)
  • Get-WinEvent (#10639) 中拒绝 Reword 访问的错误信息(谢谢) @iSazonov!)
  • 启用表表补全功能,用于枚举或类型受限的变量赋值(#10646)
  • 移除未使用的 SourceLength 远程处理属性,导致格式问题(#10765)
  • 给 ConvertFrom-StringData 添加 -Delimiter 参数(#10665)(谢谢) @steviecoaster!)
  • 在使用 SSH Invoke-Command 时为 ScriptBlock 添加位置参数(#10721)(谢谢) @machgo!)
  • 如果有多行,显示行情境信息但无简明视图(#10746)的脚本名称
  • 添加对 \wsl$\ 路径以访问文件系统提供者(#10674)的支持
  • 在解析器(#10706)中添加缺失的TokenKind.QuestionMark文本
  • 将每个运行脚本 ForEach-Object -Parallel 当前工作目录设置为与调用脚本相同的位置。 (#10672)
  • 请用 FindFirstStreamW 和 FindNextStreamW API 的 Kernell32.dll 替换 api-ms-win-core-file-l1-2-2.dll(#10680)(谢谢) @iSazonov!)
  • 调整脚本格式化帮助,使其更适合严格模式(#10563)
  • 给 New-Service 添加 -SecurityDescriptorSDDL 参数(#10483)(谢谢) @kvprasoon!)
  • 移除信息输出,整合ping使用量 Test-Connection(#10478)(谢谢) @vexx32!)
  • 读取特殊解析点而不访问它们(#10662)(谢谢) @iSazonov!)
  • 直接 Clear-Host 输出到端子(#10681)(谢谢) @iSazonov!)
  • 将换行符重新加回,以便与 Format-Table 和 -Property(#10653)进行分组
  • 在 Get-Random 上移除 -InputObject 中的[ValidateNotNullOrEmpty],以允许空字符串(#10644)
  • 提出建议系统字符串距离算法大小写无关(#10549)(谢谢) @iSazonov!)
  • 修复 ForEach-Object -Parallel 输入处理中的空引用异常(#10577)
  • Add PowerShell group policy definitions (#10468)
  • 更新控制台主机以支持用于组合场景中的XTPUSHSGR/XTPOPSGR VT 控制序列。 (#10208)
  • 在 Start-Job 添加 WorkingDirectory 参数(#10324)(谢谢) @davinci26!)
  • 移除导致断点变更错误复制到主机运行空间调试器(#10503)的事件处理程序(谢谢) @KirkMunro!)
  • 在 Microsoft.PowerShell.Commands.NativeMethods p/Invoke API(#10417) 中用 Kernell32.dll 替换 api-ms-win-core-job-12-1-0.dll @iSazonov!)
  • 修正变量赋值和 -OutVariable 中 New-Service 输出错误(#10444)(谢谢) @kvprasoon!)
  • 修复关于退出代码、命令行参数和带空格路径的全局工具问题(#10461)
  • 修复递归到 OneDrive 的问题——将 FindFirstFileEx() 改为使用 SafeFindHandle 类型(#10405)
  • 如果NVDA屏幕阅读器处于激活状态(#10385),请跳过Windows上的自动加载PSReadLine。
  • 将基于PowerShell构建的模块版本提升至7.0.0.0(#10356)
  • 如果已有同名类型存在,Add-Type 中会加错(#9609)(谢谢) @iSazonov!)

Performance

  • 避免在 Parser.SaveError (#11006) 中使用闭包
  • 创建新正则表达式实例时改进缓存(#10657)(谢谢) @iSazonov!)
  • 改进 PowerShell 内置类型数据的处理,来源于 types.ps1xml、typesV3.ps1xml 和 GetEvent.types.ps1xml (#10898)
  • 更新 PSConfiguration.ReadValueFromFile,使其更快且更高效内存 (#10839)
  • 为运行空间初始化添加小幅度的性能提升(#10569)(谢谢) @iSazonov!)
  • 让 ForEach-Object 在常用场景下更快(#10454),并修复 ForEach-Object -Parallel 多运行空间的性能问题(#10455)

代码清理

  • 修改注释和元素文本以符合 Microsoft 标准(#11304)
  • Compiler.cs(#10368)中的清理风格问题(谢谢) @iSazonov!)
  • 移除 CommaDelimitedStringCollection (#11000) 的未使用的类型转换器(谢谢) @iSazonov!)
  • InitialSessionState.cs的清理风格(#10865)(谢谢) @iSazonov!)
  • PSSession 类代码清理(#11001)
  • 移除 Get-Help 中“首次运行时运行 Update-Help”功能(#10974)Get-Help
  • 修复风格问题(#10998)(谢谢) @iSazonov!)
  • 清理:使用内置类型别名(#10882)(谢谢) @iSazonov!)
  • 移除未使用的设置键 ConsolePrompting,并在查询 ExecutionPolicy 设置(#10985)时避免不必要的字符串生成
  • 禁用每日构建的更新通知检查(#10903)(谢谢) @bergmeister!)
  • #10338(#10808)中丢失的调试API恢复
  • 移除已不再使用的WorkflowJobSourceAdapter引用(#10326)(谢谢) @KirkMunro!)
  • 通过修复 PreserveSig 属性(#9899)清理跳板列表代码中的 COM 接口(感谢) @weltkante!)
  • 请添加一条评论说明为什么 -ia 不是 -InformationAction 常见参数(#10703)的别名(谢谢) @KirkMunro!)
  • 将InvokeCommandCmdlet.cs重命名为InvokeExpressionCommand.cs(#10659)(谢谢) @kilasuit!)
  • 添加与更新通知相关的小规模代码清理(#10698)
  • 从远程设置脚本中移除弃用的工作流程逻辑(#10320)(谢谢) @KirkMunro!)
  • 更新帮助格式以使用正确的大小写(#10678)(谢谢) @tnieto88!)
  • 清理过去一个月提交中出现的CodeFactor风格问题(#10591)(谢谢) @iSazonov!)
  • 修正PSTernaryOperator实验功能描述中的拼写错误(#10586)(谢谢) @bergmeister!)
  • 将 ActionPreference.Suspend 枚举值转换为非支持的保留状态,并取消使用 ActionPreference.Ignore 的偏好变量限制(#10317)(谢谢) @KirkMunro!)
  • 用列表<T> 替换ArrayList,获得更易读、更可靠的代码而不改变功能(#10333)(谢谢) @iSazonov!)
  • 对TestConnectionCommand (#10439)进行代码风格修正(谢谢) @vexx32!)
  • Cleanup AutomationEngine 并移除多余的 SetSessionStateDrive 方法调用(#10416)(谢谢) @iSazonov!)
  • 将默认参数集合名重命名为分隔符以 ConvertTo-Csv 和 ConvertFrom-Csv (#10425)

Tools

  • 为SDKToUse属性添加默认设置,使其能在VS(#11085)中构建。
  • Install-Powershell.ps1:添加参数以使用MSI安装(#10921)(谢谢) @MJECloud!)
  • 为 install-powershell.ps1(#10914)添加基本示例(谢谢) @kilasuit!)
  • 让 Install-PowerShellRemoting.ps1 在PowerShellHome参数(#10526)中处理空字符串(谢谢) @Orca88!)
  • 在 install-powershell.sh(#10773)中从/etc/lsb-release切换到/etc/os-release(谢谢) @Himura2la!)
  • 在Windows的每日版本中查看 pwsh.exe 和pwsh(#10738)(谢谢) @centreboard!)
  • 移除 installpsh-osx.sh 中不必要的水龙头(#10752)
  • 更新 install-powershell.ps1 以检查已安装的每日构建(#10489)

测试

  • 将不可靠的DSC测试设置待定(#11131)
  • 修复字符串数据测试以正确验证哈希表的密钥(#10810)
  • 卸载测试模块(#11061)(谢谢) @iSazonov!)
  • 测试URL重试时间增加(#11015)
  • 更新测试以准确描述测试动作。 (#10928)(谢谢 @romero126!)
  • 暂时跳过 flaky test TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
  • 让事件处理程序泄漏测试稳定(#10790)
  • CI YAML中的同步大小写(#10767)(谢谢) @RDIL!)
  • 添加事件处理程序泄漏修复测试(#10768)
  • 添加 Get-ChildItem 测试(#10507)(谢谢) @iSazonov!)
  • 将测试中的歧义语言替换为参数,以提升准确性(#10666)(谢谢) @romero126!)
  • 在 ForEach-Object -Parallel 测试中添加实验检验(#10354)(谢谢) @KirkMunro!)
  • Alpine 验证测试更新(#10428)

构建与软件包改进

  • 修复协调包构建中的 Nuget 包签名问题(#11316)
  • 更新PowerShell Gallery和NuGet (#11323)中的依赖关系
  • 将 Microsoft.ApplicationInsights 从 2.11.0 提升到 2.12.0 (#11305)
  • 将 Microsoft.CodeAnalysis.CSharp 从 3.3.1 推到 3.4.0 (#11265)
  • Debian 10 和 11 (#11236) 的更新包
  • 仅在 RC (#11162) 之前启用实验性功能
  • 更新macOS最低版本(#11163)
  • 将NJsonSchema从10.0.27提升到10.0.28(#11170)
  • 更新 Preview.5 (#10854) 的 README.md 和 metadata.json 链接
  • 选择PowerShell(#10837)拥有的合规测试文件
  • 允许Win7x86 msix软件包构建。 (内部10515)
  • 允许语义版本传递给 NormalizeVersion 函数(#11087)
  • 将 .NET 核心框架推至 3.1-preview.3 (#11079)
  • 将 /src/modules (#11078) 中的 PSReadLine 从 2.0.0-beta5 提升到 2.0.0-beta6
  • 将Newtonsoft.Json从12.0.2提升到12.0.3 (#11037)(#11038)
  • 添加 Debian 10、11 和 CentOS 8 包(#11028)
  • 上传带有ReleaseDate字段的Json文件 Build-Info(#10986)
  • 将.NET core framework提升至3.1-preview.2 (#10993)
  • 启用x86 MSIX包(#10934)构建
  • 更新build.psm1中的dotnet SDK安装脚本URL(#10927)
  • Bump Markdig。签名时间从 0.17.1 到 0.18.0 (#10887)
  • Bump ThreadJob 从 2.0.1 到 2.0.2 (#10886)
  • 更新 AppX 清单和包装模块以符合微软商店要求(#10878)
  • Update package reference for PowerShell SDK to preview.5 (Internal 10295)
  • 更新 ThirdPartyNotices.txt(#10834)
  • Bump Microsoft.PowerShell.Native to 7.0.0-preview.3 (#10826)
  • 将 Microsoft.ApplicationInsights 从 2.10.0 提升到 2.11.0 (#10608)
  • 将NJsonSchema从10.0.24推迟到10.0.27(#10756)
  • 在构建系统中添加MacPort支持(#10736)(谢谢) @Lucius-Q-User!)
  • 从1.4.4到1.4.5的Bump PackageManagement(#10728)
  • 将NJsonSchema从10.0.23推迟到10.0.24 (#10635)
  • 添加环境变量以区分MSI中的客户端/服务器遥测(#10612)
  • 将PSDesiredStateConfiguration从2.0.3提升到2.0.4 (#10603)
  • 将 Microsoft.CodeAnalysis.CSharp 从 3.2.1 提升到 3.3.1 (#10607)
  • 更新至.Net Core 3.0 RTM(#10604)(谢谢) @bergmeister!)
  • 更新MSIX封装,使其版本符合Windows Store的要求(#10588)
  • Bump PowerShellGet 版本从 2.2 到 2.2.1 (#10382)
  • 从 1.4.3 到 1.4.4 的 Bump PackageManagement 版本(#10383)
  • 更新 README.md 和 metadata.json 7.0.0-preview.4(内部 10011)
  • 将.Net Core 3.0版本从预览版9升级到RC1(#10552)(谢谢) @bergmeister!)
  • 修复 ExperimentalFeature 列表生成(内部 9996)
  • PSReadLine 版本从 2.0.0-beta4 提升到 2.0.0-beta5(#10536)
  • 修正发布构建脚本,使其设置发布标签
  • Microsoft.PowerShell.Native 更新至 7.0.0-preview.2 (#10519)
  • 升级到 Netcoreapp3.0 preview9 (#10484)(谢谢) @bergmeister!)
  • 确保每日协调构建,知道它是每日构建(#10464)
  • 更新合并包构建以发布每日构建(#10449)
  • 删除相关标识(#10445)(谢谢) @RDIL!)
  • 将 NJsonSchema 版本从 10.0.22 提升到 10.0.23 (#10421)
  • 移除 linux-x64 构建文件夹,因为某些 Alpine 依赖需要删除(#10407)

文档与帮助内容

  • 重构将日志改成每个版本的日志(#11165)
  • 修复 PowerShell 7 版 FWLinks 在线帮助文档(#11071)
  • 更新 CONTRIBUTING.md (#11096)(谢谢) @mklement0!)
  • 修复安装文档链接 README.md(#11083)
  • 为 install-powershell.ps1 脚本(#11024)添加了示例(谢谢) @kilasuit!)
  • 修复 Select-String 强调和 Import-DscResource CHANGELOG.md(#10890)
  • 移除 powershell-beginners-guide.md(#10926)中的过时链接
  • 合并稳定和维护变更日志(#10527)
  • 更新:构建文档中使用的.NET版本(#10775)(谢谢) @Greg-Smulko!)
  • 替换MSDN到Microsoft Learn in powershell-beginners-guide.md(#10778)(谢谢) @iSazonov!)
  • 修复损坏的DSC概览链接(#10702)
  • 更新 Support_Question.md,链接到 Stack Overflow 作为另一个社区资源(#10638)(谢谢) @mklement0!)
  • 将处理器架构添加到分发请求模板(#10661)
  • 添加新的PowerShell MoL书籍以学习PowerShell文档(#10602)
  • 更新 README.md 和v6.1.6和v6.2.3版本的元数据(#10523)
  • 纠正 README.md(#10465)中的一个拼写错误(谢谢) @vedhasp!)
  • 在学习资源文档中添加对PSKoans模块的引用(#10369)(谢谢) @vexx32!)
  • 更新 README.md 和 metadata.json 7.0.0-preview.3 (#10393)