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、macOS或Linux的安装说明。
虽然没有官方支持,但社区也提供了 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-GridView 和 Show-Command,以及许多作为Windows一部分自带的角色管理模块。
对于 Windows,新增了一个开关参数 UseWindowsPowerShell。Import-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该 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 进程所需的 Path 和 Arguments 属性。
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)