PowerShell Windows Patterns 是一份面向 Windows PowerShell 的关键模式与常见陷阱整理,主要用于在编写脚本时规避语法和运行时错误。
用途:为 PowerShell 脚本开发提供规则清单,覆盖运算符、字符集、空值、插值、错误处理、路径、数组与 JSON 等高频问题。
主要能力与规则:
- 运算符语法:使用逻辑运算符时,每个 cmdlet 调用必须用括号包裹,例如 if ((Test-Path "a") -or (Test-Path "b")),否则可能报参数 'or' 相关错误。
- Unicode/Emoji 限制:脚本中只使用 ASCII 字符,状态提示用 [OK]、[!]、[*]、[i]、[...] 等替代 ✓、✅、❌、⚠️ 等符号,避免“Unexpected token”错误。
- 空值检查:访问属性前先判断对象是否存在,如 $array -and $array.Count -gt 0、if ($text) { $text.Length },避免“Cannot find property”。
- 字符串插值:复杂表达式先存入变量再输出,例如 $value = $obj.prop.sub 后用 "Value: $value"。
- 错误处理:说明 ErrorActionPreference 的 Stop(开发期快速失败)、Continue(生产脚本)、SilentlyContinue(预期错误)三种取值;try/catch 中不要在 try 内 return,使用 finally 清理,并在 try/catch 之后返回。
- 文件路径:推荐使用 Join-Path 拼接路径以保证安全,如 Join-Path $env:USERPROFILE "file.txt"、Join-Path $ScriptDir "data"。
- 数组操作:空数组用 $array = @(),添加元素用 $array += $item 或 ArrayList 的 $list.Add($item)。
- JSON 操作:ConvertTo-Json 始终指定 -Depth(如 -Depth 10)以处理嵌套对象;读取用 Get-Content "file.json" -Raw。
- 常见错误对照:参数 'or' 缺括号、Unexpected token 为 Unicode 字符、Cannot find property 为空对象、Cannot convert 为类型不匹配(可用 .ToString())。
- 脚本模板:包含 Set-StrictMode -Version Latest、$ErrorActionPreference = "Continue"、通过 Split-Path 获取脚本目录,以及 try/catch 中输出 [OK] 并 exit 0、异常时 Write-Warning 并 exit 1 的结构。
使用方式:作为编写或审查 PowerShell 脚本时的参考清单,按上述规则组织代码;可直接套用提供的脚本模板。
适用场景:Windows 环境下的 PowerShell 脚本开发、代码审查与问题排查。
限制:资料仅给出规则与示例,未提供安装命令、依赖环境、版本兼容范围或性能说明;具体效果需结合实际脚本验证。