pwsh

star 1.2k

在 Windows PowerShell 5.1 与 PowerShell 7 中编写和执行稳定命令,重点处理引号、管道符、原生命令参数传递与跨版本兼容。遇到 `--jq`/过滤表达式被 PowerShell 误解析、同一命令在 pwsh5 与 pwsh7 行为不一致、或需要为 pwsh7.3+ 增加参数传递适配时使用此 skill。

BiFangKNT By BiFangKNT schedule Updated 3/4/2026

name: pwsh description: 在 Windows PowerShell 5.1 与 PowerShell 7 中编写和执行稳定命令,重点处理引号、管道符、原生命令参数传递与跨版本兼容。遇到 --jq/过滤表达式被 PowerShell 误解析、同一命令在 pwsh5 与 pwsh7 行为不一致、或需要为 pwsh7.3+ 增加参数传递适配时使用此 skill。

Pwsh

Overview

以“先兼容、后增强”为原则生成 PowerShell 命令。默认先满足 pwsh5 可运行,再按需启用 pwsh7 专属能力。

Workflow

  1. 确认目标解释器:先读取 $PSVersionTable.PSVersion,判断是 5.1 还是 7.x。
  2. 选兼容级别:默认按 pwsh5 语法生成;仅在确认 7.x 时使用 7 专属语法。
  3. 组装参数:优先用变量或数组传参,避免在命令行内堆叠转义。
  4. 处理原生命令:当参数被误解析时,先改写引号;必要时使用 --% 或 pwsh7 参数传递设置。
  5. 输出结果:明确命令、兼容前提、以及可能影响行为的版本差异。

Baseline Rules

  • 将 pwsh5 视为最低兼容基线。
  • 在 PowerShell 中向 --jq 或类似参数传入含 | 的表达式时,必须使用单引号字符串。
  • 需要变量拼接时,先构造变量再传参,不在命令行直接拼复杂引号。
  • 文件读写显式指定编码,避免依赖不同版本默认值。

pwsh7 Adaptation

  • 仅在确认 PowerShell 7.3+ 时考虑 $PSNativeCommandArgumentPassing 影响。
  • 旧脚本因参数传递行为变化失败时,按需临时切换 Legacy,任务完成后恢复原值。
  • 使用 pwsh7 专属语法(如 ??||&&ForEach-Object -Parallel)前先做版本判断。

Failure Handling

  1. 出现 | 被吃掉:检查表达式是否被单引号包裹。
  2. 原生命令参数异常:先改为变量传参,再评估 --%$PSNativeCommandArgumentPassing
  3. 跨版本结果不同:回显版本号与关键变量值后,再给出兼容改写命令。

Output Format

  1. Plan: 要解决的 PowerShell 兼容问题。
  2. Commands: 可直接执行的命令(必要时分 5.1 与 7.x 两套)。
  3. Result: 关键输出与版本信息。
  4. Compat: 是否依赖 pwsh7 特性,及回退方案。

Reference

按需加载,不要一次性读取全部细节:

  • 通用兼容基线:references/pwsh5-baseline.md
  • --jq 与引号规则:references/quoting-jq.md
  • pwsh7 增量适配:references/pwsh7-adaptation.md
Install via CLI
npx skills add https://github.com/BiFangKNT/mtga --skill pwsh
Repository Details
star Stars 1,188
call_split Forks 130
navigation Branch main
article Path SKILL.md
More from Creator