Agent Skills
返回列表
💻

Windows PowerShell 模式与避坑

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/powershell-windows。

技能介绍

为什么 Windows PowerShell 容易踩坑

在 Windows 上写 PowerShell 时,很多错误来自语法细节而不是 cmdlet 本身:if 里把 -or / -and 直接写在 cmdlet 参数后面会触发「参数 'or'」;脚本里用 emoji 或特殊 Unicode 可能在控制台或旧编码下变成「意外的令牌」;对可能为 $null 的对象直接访问 .Count、.Length 会报找不到属性。路径拼接用字符串拼接、嵌套对象 ConvertTo-Json 不写 -Depth,也会在生产环境里悄悄丢数据。

技能覆盖的核心模式

本技能把 Windows PowerShell 模式 整理成可对照的检查清单:

  • 逻辑运算:每个 cmdlet 调用在 -or / -and 两侧都要用括号,例如 if ((Test-Path "a") -or (Test-Path "b"))。
  • 输出字符集:脚本内状态与提示只用 ASCII 标记(如 [OK]、[!]),避免 ✅、⚠️ 等符号。
  • 空值:先判断 $array、$text 是否存在,再读 .Count 或 .Length。
  • 路径:变量与相对路径用 Join-Path,字面 Windows 路径保持 C:\... 形式。
  • JSON:读写嵌套结构时固定 ConvertTo-Json -Depth 10(或按需加大),配合 Get-Content -Raw 与 UTF8 写出。
  • 错误处理:开发可用 $ErrorActionPreference = 'Stop';try/catch 里避免 return,清理放在 finally,返回值放在块外。

文末还对照常见错误信息与修复方式,便于和 CI/本地日志对号入座。

适用边界

内容针对 Windows PowerShell / Windows 环境 的惯用法与陷阱,不替代完整语言教程;跨平台 PowerShell 7+ 在路径与部分行为上与 Windows PowerShell 5.x 仍有差异,迁移时需单独验证。复杂字符串插值建议先赋给中间变量,技能只给出方向性模式而非覆盖所有表达式边界情况。

使用场景

  • 在 Windows 构建或发布机上维护 `.ps1`,需要用多个 `Test-Path` 组合判断目录后再复制或解压产物。
  • 编写读取嵌套 `appSettings` 类 JSON 的部署脚本,要求 `ConvertTo-Json` 指定 `-Depth` 避免子对象被截断。
  • CI 或本地执行报错「参数 'or'」「意外的令牌」,需要按规则给 cmdlet 加括号并去掉脚本中的 emoji 输出。
  • 用 `Join-Path` 拼接 `$env:USERPROFILE` 与相对配置路径,替代手写反斜杠字符串以免路径在不同账号下出错。

适合人员

  • 负责 Windows Server 巡检与批量修复、日常产出可重复运行 `.ps1` 的系统运维工程师
  • 在 Azure DevOps / Jenkins Windows Agent 上维护构建发布脚本、需处理 JSON 配置与失败日志的 DevOps 工程师
  • 开发企业内网终端管理或安装器脚本、输出必须在旧版 PowerShell 控制台正常显示的桌面/端点工具开发
  • 刚接手遗留 PowerShell 仓库、需要对照常见错误表快速改 `ErrorActionPreference` 与 try/finally 结构的维护者