首页
/ PowerShell 7.1 版本演进全解析:从 .NET 5 迁移到全生命周期服务修复

PowerShell 7.1 版本演进全解析:从 .NET 5 迁移到全生命周期服务修复

2026-09-07 16:49:40作者:劳婵绚Shirley

本文基于当前仓库 CHANGELOG/7.1.md 完整梳理 PowerShell 7.1 从 2020 年 3 月的 7.1.0-preview.1 到 2022 年 4 月 7.1.7 的整个发布周期。内容覆盖破坏性变更、引擎级行为修复、新 cmdlet 参数与语言特性转正、.NET 5 构建迁移以及跨平台打包的演进,并结合仓库 src 目录下的核心实现源码进行佐证。读完本文,你将能够判断哪些行为变更会影响既有脚本,理解 $?$ErrorActionPreference、stderr 重定向等运行时语义的演化脉络,并掌握 7.1 版本所承载新特性(如 ForEach-Object -ParallelGet-Date -AsUTC、子系统插件模型)的实际代码落点,从而为升级、兼容与排障提供准确依据。

阅读提示:本文按「主题+版本时间线」双维度组织。各小节的修复与特性均标注其引入版本;括号内的 #PR号 与贡献者致谢摘自原 changelog,保留作者归属以便检索原始 Issue。


一、版本定位与时间线总览

PowerShell 7.1 是在 7.0(首个基于 .NET Core 3.1 的 LTS)之后推出的**非 LTS(STS,标准期限支持)**版本,构建基座为 .NET 5。整条发布链横跨一年多,共经历 7 个预览版(preview.1 ~ preview.7)、2 个候选版(rc.1、rc.2)、正式版 7.1.0 以及 7 个服务更新(7.1.1 ~ 7.1.7)。

版本 发布日期 阶段重点
7.1.0-preview.1 2020-03-26 迁移 .NET 5 preview.1;-replace 使用固定区域性字符串转换
7.1.0-preview.2 2020-04-23 ForEach-Object -Parallel runspace 复用;Get-Random -Shuffle
7.1.0-preview.3 2020-05-14 实验特性「向原生命令传 PSPath」
7.1.0-preview.4 2020-06-25 Test-Json -SchemaFileRead-Host -MaskInput
7.1.0-preview.5 2020-07-06 MSI 升级码修复;格式测试加固
7.1.0-preview.6 2020-08-17 若干破坏性变更;ComInterop 回归;Get-Date -AsUTC
7.1.0-preview.7 2020-09-08 子系统插件模型雏形;TLS 1.3 支持
7.1.0-rc.1 2020-09-29 ComInterop 依据 .NET 团队建议修正
7.1.0-rc.2 2020-10-20 Get-PSSubsystem 命令落地
7.1.0 2020-11-11 GA:.NET 5.0 RTM、PSReadLine 2.1.0、Ubuntu 20.04 校验
7.1.1 2021-01-14 全面切换 ESRP 签名流水线
7.1.2 2021-02-11 .NET SDK 5.0.103;发布全局工具包
7.1.3 2021-03-11 移除 Start-Process 32K 环境块限制
7.1.4 2021-08-12 .NET SDK 5.0.400 常规升级
7.1.5 2021-10-14 锁定机 Add-Type/遥测加固
7.1.6 2022-03-16 ARM64 macOS 打包;SBOM 清单
7.1.7 2022-04-26 .NET 5.0.16 / SDK 5.0.407;部分模块搜索路径修复

需要说明的是,当前仓库为 PowerShell 开源代码库的镜像快照,changelog 中 [vX.Y.Z]: compare 形式的版本对比链接指向外部站点,本文不展开外部引用,仅以其文字内容为事实依据。


二、Breaking Changes:脚本兼容性红线的完整清单

7.1 的破坏性变更贯穿 preview.2 ~ preview.7 与 preview.1,是升级迁移时需要优先评估的部分。逐条整理如下:

1. $ErrorActionPreference 不再影响原生命令的 stderr(preview.6)

Make $ErrorActionPreference not affect stderr output of native commands (#13361)。在 7.1 之前,$ErrorActionPreference = 'Stop' 会把写向 stderr 的原生命令输出当作终止性错误;该行为在 7.1 中被移除,stderr 输出回归「仅是数据流」,不再受偏好变量干扰。这是对上一版刚引入行为的纠正,语义上更符合 Unix 工具的流约定。

2. $? 在原生命令写 stderr 时不再置为 $false(preview.7)

Fix $? to not be $false when native command writes to stderr (#13395) 进一步巩固了上述语义:判断一条原生命令是否成功,只依据退出码,而不再依据它是否向 stderr 写过内容。

3. Start-Process-UseNewEnvironment 语义(preview.2)

On Windows, Start-Process creates a process environment with all the environment variables from current session, using -UseNewEnvironment creates a new default process environment (#10830)。Windows 上不再默认以全新的默认环境启动进程,而是继承当前会话全部环境变量;显式传 -UseNewEnvironment 才获取新进程的默认环境。同时更新了 UseNewEnvironment 参数的实现(Update UseNewEnvironment parameter behavior of Start-Process cmdlet on Windows (#10830))。

4. -replace 使用固定区域性(invariant culture)字符串转换(preview.1)

Use invariant culture string conversion for -replace operator (#10954) 消除了 -replace 在土耳其语等区域性下因大小写规则差异导致的替换不一致。该变更同时被列入 Breaking Changes 与 Experimental Features 两个分类,意味着它先以实验特性形式存在、随后转正。

5. 显式命名参数优先于哈希表 splatting(preview.6)

Allow explicitly specified named parameter to supersede the same one from hashtable splatting (#13162):当同一参数既被显式命名又被 splat 传入时,显式命名者胜出,结束了此前「先到先得」造成的歧义。

6. Get-Date 参数更名(preview.6)

Rename -FromUnixTime to -UnixTimeSeconds on Get-Date to allow Unix time input (#13084)。参数名与 .NET API DateTimeOffset.FromUnixTimeSeconds 对齐。仓库中的参数声明位于 GetDateCommand.cs

7. Split-Path 参数约束(preview.4 / preview.6)

  • Make the switch parameter -Qualifier not positional for Split-Path (#12960)-Qualifier 不再是位置参数;
  • Make other switches mandatory in Split-Path (#13150):其余开关需显式给出,避免歧义调用。

8. Web cmdlet 的 -OutFile 按字面路径处理(preview.4)

Make -OutFile parameter in web cmdlets to work like -LiteralPath (#11701)Invoke-WebRequest/Invoke-RestMethod-OutFile 不再做通配解析,行为与 -LiteralPath 一致。

9. Start-Process 工作目录按字面路径解析(preview.4)

Resolve the working directory as literal path for Start-Process when it's not specified (#11946):未显式指定工作目录时,不再将其当通配符模式展开。

10. BigInteger 数字字面量绑定修正(preview.3)

Fix string parameter binding for BigInteger numeric literals (#11634):修正大整数后缀字面量向字符串参数绑定时的数值语义。

11. 脚本块转委托不再包一层 PSObject(preview.2)

Do not wrap return result to PSObject when converting ScriptBlock to delegate (#10619)(同一 PR 在 preview.2 的 Breaking Changes 与 General Cmdlet Updates 中出现两次),保证委托返回值的类型纯度。

12. $null 语义回退(preview.1)

Revert the PRs that made DBNull.Value and NullString.Value treated as $null (#11648):撤回把 DBNull.ValueNullString.Value 当作 $null 处理的改动,维持原有类型区分。


三、语言与实验特性:从实验到默认

7.1 是一个「特性转正」密集的版本,多个实验特性在此收官进入默认行为。

1. 空值条件与空合并系列转正

  • Move PSNullConditionalOperators feature out of experimental (#13529)(preview.7):?.?[] 运算符转正式;
  • 引擎层面配套修复 Ensure null-coalescing LHS is evaluated only once (#12667)(preview.4),确保 ?? 左侧表达式不会因求值两次而产生副作用(例如 (Get-Random) 这类调用只执行一次);
  • preview.4 的代码清理中还有 cleanup: Use coalesce expression (#12829),说明新语法已在引擎自身代码中投入使用。

2. 向原生命令传 PSPath(preview.3 实验 → preview.7 转正)

Support passing PSPath to native commands (#12386)(preview.3 加入实验特性),随后 Move PSNativePSPathResolution feature out of Experimental (#13522)(preview.7 转正)。转正意味着无需 Resolve-Path 手动展开即可把 PSPath(如 Microsoft.PowerShell.Core\FileSystem::… 形式)直接传给外部程序。

3. 子系统(Subsystem)插件模型——「迷你 PowerShell」的基石

  • preview.7:Initial work of the subsystem plugin model (for minimal powershell) (#13186)
  • rc.2:Rename Get-Subsystem to Get-PSSubsystem and fix two related minor issues (#13765)

该模型将 PowerShell 拆解为可插拔的子系统(当前源码中可见的包括预测 PredictionSubsystem、反馈 FeedbackSubsystem、DSC DscSubsystem 等),并通过 GetPSSubsystemCommand.cs 暴露查询入口,管理逻辑集中在 SubsystemManager.csSubsystemInfo.cs。核心意图是让特定场景可以裁剪出一个最小 PowerShell(只有所需子系统的宿主)。

4. 调试器能力:-Runspace 参数(preview.6 实验)

Add -Runspace parameter to all *-PSBreakpoint cmdlets (#10492):所有 *-PSBreakpoint cmdlet 获得 -Runspace 参数,可将断点操作定向到指定 runspace。

5. 其余转正与还原

  • preview.7 中 Revert PSNativePSPathResolution to being an experimental feature (#13734) 是中间态回退,随后又被重新转正(见上);这是 7.1 开发中「试错—回退—再转正」的典型轨迹;
  • 支持按需 using module 相对路径中的 /Allow / in relative paths for using module (#7424),preview.3,见 Build 列表);
  • CompleteInput 允许在 AST/脚本含匹配函数定义时从 ArgumentCompleter 返回结果(#10574,preview.1)。

四、引擎级修复与运行时语义演化

1. 管道与进程语义(preview.7)

  • 优化 GetSystemLockdownPolicy 在非锁定场景下的开销(#13438),即大部分普通用户环境跳过重策略检查;
  • preview.2 修正 ForEach-Object -Parallel 的两类并发问题:Implement ForEach-Object -Parallel runspace reuse (#12122)(runspace 复用,避免每个输入都重建)与 Fix possible race that leaks PowerShell object dispose in ForEach-Object -Parallel (#12227);另修复并行循环位于非当前驱动器时的失败(#12197)。

源码佐证:ForEach-Object 并行参数集在 InternalCommands.cs 中声明,包括必选的 ScriptBlock ParallelThrottleLimit-UseNewRunspace 开关;初始化时经 PSTaskPool(见同文件 InitParallelParameterSet)统一调度,runspace 复用与独立 runspace(-UseNewRunspace)两种策略均由该任务池承载。

2. 参数绑定与解析器

  • 命令行列式解析重构(Refactor command line parser to do early parsing (#11482))在 preview.6 完成,配合 Add null check for args in CommandLineParser (#13451) 使 pwsh-Command/参数解析更早、更稳;
  • preview.7 增加 CommandLineParserargs 的空引用防护;
  • 参数绑定错误信息修复:Fix an operator preference order issue in binder code (#12075)Fix NullReferenceException when binding common parameters of type ActionPreference (#12124)(preview.1)。

3. .NET 互操作与类型系统

  • COM 互操作回归与修缮:preview.6 Refresh and enable the ComInterop code in PowerShell (#13304)Remove ComEnumerator as COM objects using IEnumerator is now supported in .NET 5.0 (#13259);rc.1 Make fixes to ComInterop code as suggested by .NET team (#13533)。相关代码位于 engine/ComInterop 目录(共 55 个 C# 源文件),与 .NET 5.0 内建 COM 支持协同;
  • 内在类型转换器:preview.6 Add support for some .NET intrinsic type converters (#12580),强化 LanguagePrimitives 的能力;
  • 其他类型语义:Improve BigInteger casting behaviors (#12629)Allow shorter signed hex literals with appropriate type suffixes (#11844)Fix inconsistent exception message in -replace operator (#12388)

4. 安全与遥测

  • preview.4 起 Restrict loading of amsi.dll to system32 folder (#12730),防止从任意路径加载 AMSI 提供程序(供应链加固);
  • 7.1.5 Disallow Add-Type in NoLanguage mode on a locked down machine (Internal 17522)Handle error when the telemetry mutex cannot be created (#15574)(致谢 @gukoff),保证受限机上不可通过 Add-Type 绕过 NoLanguage 模式;同一版本 Configure ApplicationInsights to not send cloud role name (Internal 17100) 收窄遥测字段;
  • 7.1.7 Do not include node names when sending telemetry (#16981):遥测不再携带节点名,进一步去标识化;
  • preview.1 Allow cross-platform CAPI-compatible remote key exchange (#11185)Update CmsCommands to use Store vs certificate provider (#11643) 调整证书交互路径。

5. 文件系统与路径

  • preview.7 Process reparse points for Microsoft Store applications (#13481):处理 Store 应用挂接点的重解析点;
  • preview.6 Fix Move-Item to support cross-mount moves on Unix (#13044)Handle WSL filesystem path when analyze security zone of a file (#13120)
  • 7.1.1 Avoid an exception if file system does not support reparse points (#13634)
  • 7.1.7 修复部分模块搜索路径可能被解析到 CWD 的缺陷(Fix for partial PowerShell module search paths, that can be resolved to CWD locations),避免模块导入时的路径劫持风险。

6. 作业与远程处理

  • preview.2 Start-Job 在系统未将 Windows PowerShell 注册为默认 shell 时仍可用(#12296);Fix Invoke-Command to detect recursive call of the same history entry (#13197)(preview.6);Re-add check for Invoke-Command job dispose (#11388)(preview.1)与 Fix SuspendStoppingPipeline()/RestoreStoppingPipeline() NRE (#11870)
  • preview.1 Remove network hop restriction for interactive sessions (#11920) 取消交互会话的网络跳数限制;
  • 进程流读取优化:preview.2 使用独立线程读取子进程重定向输出/错误流(#11713),改善 out-of-proc 作业的死锁表现。

五、Cmdlet 新参数与行为修复亮点

1. Get-Date-UnixTimeSeconds-AsUTC(preview.6)

  • -FromUnixTime 更名为 -UnixTimeSeconds#13084),此后 Get-Date -UnixTimeSeconds 1590000000 即可把 Unix 时间戳转成本地 DateTime
  • 新增 Add -AsUTC to the Get-Date cmdlet (#11611),输入按 UTC 解释输出。

源码佐证(GetDateCommand.cs):UnixTimeSeconds 参数(#L56-L60)与 AsUTC 开关(#L248-L256)分属 UnixTimeSecondsAndFormat/UnixTimeSecondsAndUFormat 等不同参数集(#L573-L574);运行时经 DateTimeOffset.FromUnixTimeSeconds(...).LocalDateTime 转换(#L276),并在输出阶段依据 AsUTC 分支处理(#L329)。相关的行为测试位于 test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Date.Tests.ps1

2. Test-Json-SchemaFile(preview.4)

Add parameter SchemaFile to Test-Json cmdlet (#11934)(致谢 @beatcracker),允许用 JSON Schema 文件校验输入 JSON,而不再只做语法校验。源码中 TestJsonCommand.cs 定义了必填的 SchemaFile 参数,并解析出三条独立参数集(字符串/路径/字面路径分别对应 JsonStringWithSchemaFileJsonPathWithSchemaFileJsonLiteralPathWithSchemaFile,见 #L28-L34),验证失败时给出明确错误类别(InvalidJsonSchema/JsonSchemaFileOpenFailure#L194-L213)。

3. Read-Host -MaskInput(preview.4)

Adds -MaskInput parameter to Read-Host (#10908):终端输入以掩码显示但返回明文。配套变更 Change Read-Host -MaskInput to use existing SecureString path, but return as plain text (#13256)(preview.6)统一了内部读取路径。

4. Get-Random -Shuffle(preview.2)

Add -Shuffle switch to Get-Random command (#11093):直接洗牌集合。

5. 格式输出与错误视图(ConciseView)系列修复

  • 错误视图健壮性:ConciseView 适配无控制台宽度场景(#11784)、按 [Environment]::NewLine 切分 PositionMessage#12010)、超宽且无空白错误信息的折行(#11880),以及交互式高级函数写错误时 ConciseView 显示(#13623,rc.1)——可见 7.1 花费大量精力打磨这个默认错误视图的边缘情况;
  • 默认进度条配色调整以改善对比度(#11455,preview.2,致谢 @rkeithhill);
  • Format-Hex 修复布尔值分组行为(#11587);Format-Custom 新增防数据丢失测试(#11393)。

6. Web cmdlet 集修复

  • TLS 1.3 支持(preview.7):Add support for TLS 1.3 in Web cmdlets (#13409)
  • Invoke-RestMethod 改用异步流(#11095,preview.1),改善大响应体吞吐;
  • -NoProxy 下正确从 body 构造 URI(#14673,7.1.3);忽略 null 值请求头(#11424);Link header 中无引号的 relation-type 正则修正(#11711);<img /> 检测正则修正(#12099)。

7. 控制台与主机

  • preview.6 修正 pwsh 两个冲突的简写开关:-s(原 STA)让位(#13262),-inputformat 前缀从 -in 改为 -inp 以避免与 -interactive 冲突(#13205)——这意味着 pwsh -in 不再可用,脚本若使用过旧缩写需改为 -inp
  • rc.2 修复与 Windows 应用关联文件启动时的阻塞等待(#13750);
  • preview.1 Fix help function to check if less is availableEnable pwsh on systems where mpr.dll and STA is unavailable (#11748)

8. Unix 平台补齐

preview.1 重构 Restart-Computer 并新增 Stop-Computer 的 Linux/macOS 实现(#11319#11151)——在此之前这两条命令在 Unix 上并不可靠或缺失。


六、测试、工具链与质量保障演进

  1. Pester 版本策略:preview.2 明确将主 Pester 钉在 4.x(#12262),规避 Pester 5 破坏性发布带来的测试波动;大量存量测试在 preview.1 完成到 Pester v4 语法的统一(#11544)。
  2. CI 均衡与平台适配Re-balance CI tests (#11420);preview.1 为 Raspbian 修复测试运行(#11661);preview.6 Mark Test-Connection -TraceRoute tests as pending;SSH 远程测试补充辅助函数并新增 Ubuntu SSH 远程 CI(#11955#12033)。
  3. 静态检查与编辑器生态.editorconfig 大量扩充(字符集 utf-8 无 BOM、csharp_preferred_modifier_order、OmniSharp 支持),VS Code 推荐扩展由 ms-vscode.csharp 迁移到 ms-dotnettools.csharp#12083);markdownlint 持续安全更新(7.1.0 及 7.1.4 期间多次)。
  4. 测试基础设施:preview.3 Make CIM tab completion test case insensitiveMark ping tests as Pending;preview.6 去 DNS 依赖(macOS Test-Connection);7.1.7 重新启用指向 PowerShell Gallery 的 PowerShellGet 测试(#17062)并跳过失败脚本块测试(#17093)。

仓库内测试布局可为验证以上内容提供入口:模块测试位于 test/powershell/Modules,引擎测试位于 test/powershell/engine,通用测试基础设施与 CI 模块见 test/infrastructure


七、构建与打包:全面迁移 .NET 5 与 ESRP 签名

1. .NET 5 的渐进式迁移

7.1 的构建基线在 preview 阶段一路随 .NET 5 预览推进:preview.1 使用 .NET 5 preview.1(#12140)→ preview.2 升级到 Preview 2/3(#12250#12353)→ preview.3 使用 preview.4 → preview.4 升级到 5.0.100-preview.5 系列 → preview.5/preview.6 持续 bump 到 5.0.100-preview.7 → rc.2 迁至 5.0-RC.2(#13780)→ GA 用 .NET 5.0 RTM(#13920)。期间同步完成:

  • TargetFramework 从 netcoreapp5.0 改为 net5.0#12486#12503),并跟进 net5.0-windows 等平台细分;关闭 netcoreapp 时代对 x86 的限制(如 Disable x86 PDB generation);
  • ReadyToRun 策略调整:preview.3 开启(#12361),preview.4 对框架依赖包关闭(#12450),debug 构建关闭 R2R(#13144);
  • 移除对 cmake 的依赖(7.1.6,#16578),构建链进一步纯化。

2. 签名流水线迁移 ESRP

7.1.1 一次性完成 Windows、Linux、macOS、NuGet 与第三方组件签名向 ESRP(Enhanced Signing Request Pipeline) 的集中迁移(#13988#14010#14210#14324#14060),此后 7.1.2/7.1.3 继续修复子目录文件第三方签名、对不支持类型跳过签名校验等细节。

3. 安装包与制品矩阵

  • Ubuntu 20.04:GA 前为发行脚本补充依赖与校验(#13993#15906);
  • Gentoo 初次支持(preview.2,#11429)、Debian 10(preview.1,#11540);
  • macOS ARM64 打包在 7.1.6 启用(#15768);预览版 MSIX 支持 arm64 安装(#13043);Win-ARM64 在 7.1 开发期结束「实验」标注,但稳定版仍标记 preview(见 preview.4 文档更新);
  • 移除 WiX 安装(7.1.6,#16834)并重构 MSI 代码以便未来加入 WiX exe 安装器(#13139);修正 stable/preview 的 MSI 升级码与快捷方式问题(#13036#13070#12792);
  • 全局工具(Global Tool) 进入稳定发布制品:发布 global tool 包、为 global tool 生成 checksum 文件、确保稳定构建发布(#14620#17056#19624);
  • 主包附带 SBOM(软件物料清单)(7.1.6,#16202#16641#16711);Alpine/ARM SKU 随包附带开启实验特性的配置文件(#16823);
  • macOS PKG 逐文件签名(#13392),Store 版 MSIX 使用 Authenticode 签名(#13330)。

4. 发布管线 yaml 化

preview.6 Create release pipeline as a yaml pipeline (#13394),将发布流水线迁入 YAML 定义;新增 release build 模板、阶段依赖与 blob 覆盖检查(#12921)、buildInfo JSON 发布纠错诊断(#16404)等大量自动化脚本,仓库根目录的 tools/ci.psm1tools/releaseTools.psm1 即承载了这批 CI/发布能力。


八、7.1.1 ~ 7.1.7 服务版本维护要点

正式版之后,7.1 进入服务维护期,修复集中在安全、签名、构建稳定性三方面,同时穿插少量运行时修复:

  • 7.1.1(2021-01-14):ESRP 签名全面迁移(见上);Avoid an exception if file system does not support reparse points (#13634)AppLocker Enforce mode 优先于 UMCI Audit(#14353)。
  • 7.1.2(2021-02-11):.NET SDK 5.0.103;修复子文件夹文件第三方签名(#14751);稳定版发布全局工具包。
  • 7.1.3(2021-03-11):移除 Start-Process 环境块 32K 字符限制(#14111)——Windows 下向子进程传递超长环境变量不再被截断;Web cmdlet -NoProxy 下 URI 构造修复(#14673);PromptForCredential()targetName 作为域处理(#14504);CentOS 7 docker 镜像安装 wget(#14857)。
  • 7.1.4(2021-08-12):.NET SDK 5.0.400;从 PSDesiredStateConfiguration 移除 cat 文件。
  • 7.1.5(2021-10-14):AppLocker 测试文件删除越权错误处理(#15881);转录场景对 Out-Default 的识别更严谨(#15653);受限机禁用 Add-Type、遥测不再发送云角色名、遥测互斥体失败不崩溃(#15574)。
  • 7.1.6(2022-03-16):Alpine 3.12/ARM64 打包与 SBOM(见上);构建与发布镜像全面切换自建镜像(#16801)。
  • 7.1.7(2022-04-26):最终将 .NET 更新到 5.0.16 / SDK 5.0.407;修复部分模块搜索路径解析到 CWD 的问题;遥测去除节点名(#16981);重新启用 PowerShellGet 的 PSGallery 测试(#17062)。

整体上,7.1 的服务更新严格执行了「STS 短支持期」的节奏——最后一次更新(7.1.7)距 GA 约 17 个月,此后该系列的生命周期随策略收束,用户应迁移到后续受支持版本。


九、仓库内可继续深挖的源码地图

若想验证本文所述特性在当前仓库中的真实代码形态,可按以下路径继续深入:

特性/主题 仓库源码入口
Get-Date -AsUTC/-UnixTimeSeconds GetDateCommand.cs 与对应测试 Get-Date.Tests.ps1
ForEach-Object -Parallel runspace 池 InternalCommands.csParallelParameterSet/PSTaskPool
Test-Json -SchemaFile TestJsonCommand.cs
子系统/Get-PSSubsystem engine/Subsystem(含 GetPSSubsystemCommand.cs
ComInterop 修缮 engine/ComInterop
格式化输出/错误视图相关 FormatAndOutputengine/interpreter
CI/发布自动化 tools/ci.psm1tools/releaseTools.psm1
各版本纵向对照 CHANGELOG/README.mdCHANGELOG 下的 7.0/7.2/7.3/… 变更日志

当前仓库其余版本的演进记录(7.2 及之后、当前预览版等)可继续查阅 CHANGELOG 目录下的对应文档,以了解 7.1 中那些以实验形式引入的特性(子系统、PSNativePSPathResolution 等)在后续版本中的去向。


结语

PowerShell 7.1 作为 .NET 5 之上的过渡性版本,其 changelog 清晰折射出一个成熟开源 shell 的治理节奏:功能以「实验特性」为缓冲带、破坏性变更被显式登记并配以 PR 溯源、服务版本严格聚焦签名安全与构建稳定性。对脚本作者而言,本版最重要的迁移动作是重新审视原生命令 stderr 相关的 $ErrorActionPreference/$? 语义、Start-Process 环境继承、Split-Path 与 Web cmdlet -OutFile 的参数约束;对平台工程而言,ESRP 签名与 SBOM 化则标志着 PowerShell 交付流水线的工业化。理解 7.1 的这些变迁,既能帮助你在升级旧脚本时规避兼容性陷阱,也能为读懂当前仓库后续版本的变更逻辑提供参照系。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.74 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
897
5.81 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
531
595
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
920
1.84 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.63 K
1.02 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.36 K
1.46 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.02 K
518
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
547
389