技能 powershell-windows
📦

powershell-windows

安全 ⚙️ 外部命令

掌握 PowerShell Windows 脚本模式

避免导致脚本失败的常见 PowerShell 陷阱。学习正确的运算符语法、错误处理和 Windows 特定模式,实现可靠的自动化。

支持: Claude Codex Code(CC)
🥉 74 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“powershell-windows”。 检查文件或目录是否存在

预期结果:

使用:if ((Test-Path "file.txt") -or (Test-Path "folder")) - 使用逻辑运算符时,每个 cmdlet 必须用括号包裹

正在使用“powershell-windows”。 安全获取数组长度

预期结果:

使用:if ($array -and $array.Count -gt 0) - 访问属性前始终验证数组是否存在

正在使用“powershell-windows”。 将嵌套对象转换为 JSON

预期结果:

使用:$data | ConvertTo-Json -Depth 10 - 转换嵌套对象时始终指定 depth 参数以避免截断

安全审计

安全
v1 • 2/24/2026

Static analysis detected 34 patterns but all are false positives. The SKILL.md file is documentation only, containing PowerShell syntax examples and best practices. No executable code or security risks present. The skill is a reference guide for proper PowerShell scripting patterns on Windows.

1
已扫描文件
173
分析行数
1
发现项
1
审计总数
审计者: claude

质量评分

38
架构
100
可维护性
85
内容
50
社区
100
安全
91
规范符合性

你能构建什么

DevOps 工程师脚本编写

为 CI/CD 流水线创建具有适当错误处理和空值安全的可靠 Windows 自动化脚本

系统管理员参考

维护遗留脚本时的 PowerShell 语法规则和常见陷阱快速参考

开发者学习资源

学习 PowerShell 最佳实践,在将 Windows 脚本添加到您的工具箱时避免常见错误

试试这些提示

基础语法问题
检查文件是否存在 OR 其他条件为真的正确 PowerShell 语法是什么?
错误处理模式
展示需要清理资源的 PowerShell 脚本的正确 try-catch-finally 模式
空值安全检查
在 PowerShell 中访问数组的 Count 属性之前,如何安全地检查数组是否有元素?
JSON 文件操作
在 PowerShell 中读写包含嵌套对象的 JSON 文件的正确方法是什么?

最佳实践

  • 使用 -or 和 -and 等逻辑运算符时,将每个 cmdlet 包裹在括号中
  • 访问对象属性或方法前始终检查空值
  • 使用 Join-Path 构建文件路径而不是字符串拼接
  • 根据您的环境适当设置 ErrorActionPreference(开发环境用 Stop,生产环境用 Continue)
  • 转换嵌套对象为 JSON 时指定 -Depth 参数

避免

  • 在 PowerShell 脚本中使用 unicode 或表情符号 - 使用 ASCII 标记如 [OK] 代替
  • 访问属性时不进行空值检查 - 会在空值上导致运行时错误
  • 使用 ConvertTo-Json 时不带 -Depth 参数 - 嵌套对象会被截断
  • 在 try 块中放置 return 语句 - 使用 finally 进行清理并在之后 return

常见问题

为什么 PowerShell 逻辑运算符需要额外的括号?
PowerShell 解析 cmdlet 和运算符的方式与其他语言不同。每个 cmdlet 调用必须用括号包裹,以便解析器在应用逻辑运算符之前正确识别每个命令的结束位置。
在 PowerShell 中处理文件路径最安全的方法是什么?
使用 Join-Path 而不是字符串拼接。这可以正确处理不同 Windows 版本的路径分隔符,并避免尾随反斜杠的问题。
为什么应该在 PowerShell 脚本中避免 unicode 字符?
Unicode 字符在不同编码的系统上可能导致解析错误。使用 ASCII 标记如 [OK]、[WARN] 或 [ERROR] 可确保在所有 Windows 环境中的兼容性。
我应该在生产环境中使用什么 ErrorActionPreference?
生产环境使用 'Continue' 以允许脚本优雅地处理错误。开发环境使用 'Stop' 以便及早发现问题。当错误是预期内且会被处理时使用 'SilentlyContinue'。
如何正确地将嵌套对象转换为 JSON?
始终为 ConvertTo-Json 指定 -Depth 参数。默认深度为 2,会截断嵌套对象。对于深度嵌套的结构使用 -Depth 10 或更高。
空值安全数组访问的正确模式是什么?
同时检查数组及其计数:if ($array -and $array.Count -gt 0)。这可以防止在访问 Count 属性之前数组为 null 或未定义时出现错误。

开发者详情

文件结构

📄 SKILL.md