项目文件夹

文件
wehub-resource-sync bb5c75ce05
Component Security Validation / Security Audit (push) Has been cancelled
Deploy to Cloudflare Pages / deploy (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:38:58 +08:00

1 行
3.6 KiB
JSON

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
{"content": "---\nname: powershell-windows\ndescription: PowerShell Windows patterns. Critical pitfalls, operator syntax, error handling.\nallowed-tools: Read, Write, Edit, Glob, Grep, Bash\n---\n\n# PowerShell Windows Patterns\n\n> Critical patterns and pitfalls for Windows PowerShell.\n\n---\n\n## 1. Operator Syntax Rules\n\n### CRITICAL: Parentheses Required\n\n| ❌ Wrong | ✅ Correct |\n|----------|-----------|\n| `if (Test-Path \"a\" -or Test-Path \"b\")` | `if ((Test-Path \"a\") -or (Test-Path \"b\"))` |\n| `if (Get-Item $x -and $y -eq 5)` | `if ((Get-Item $x) -and ($y -eq 5))` |\n\n**Rule:** Each cmdlet call MUST be in parentheses when using logical operators.\n\n---\n\n## 2. Unicode/Emoji Restriction\n\n### CRITICAL: No Unicode in Scripts\n\n| Purpose | ❌ Don't Use | ✅ Use |\n|---------|-------------|--------|\n| Success | ✅ ✓ | [OK] [+] |\n| Error | ❌ ✗ 🔴 | [!] [X] |\n| Warning | ⚠️ 🟡 | [*] [WARN] |\n| Info | ️ 🔵 | [i] [INFO] |\n| Progress | ⏳ | [...] |\n\n**Rule:** Use ASCII characters only in PowerShell scripts.\n\n---\n\n## 3. Null Check Patterns\n\n### Always Check Before Access\n\n| ❌ Wrong | ✅ Correct |\n|----------|-----------|\n| `$array.Count -gt 0` | `$array -and $array.Count -gt 0` |\n| `$text.Length` | `if ($text) { $text.Length }` |\n\n---\n\n## 4. String Interpolation\n\n### Complex Expressions\n\n| ❌ Wrong | ✅ Correct |\n|----------|-----------|\n| `\"Value: $($obj.prop.sub)\"` | Store in variable first |\n\n**Pattern:**\n```\n$value = $obj.prop.sub\nWrite-Output \"Value: $value\"\n```\n\n---\n\n## 5. Error Handling\n\n### ErrorActionPreference\n\n| Value | Use |\n|-------|-----|\n| Stop | Development (fail fast) |\n| Continue | Production scripts |\n| SilentlyContinue | When errors expected |\n\n### Try/Catch Pattern\n\n- Don't return inside try block\n- Use finally for cleanup\n- Return after try/catch\n\n---\n\n## 6. File Paths\n\n### Windows Path Rules\n\n| Pattern | Use |\n|---------|-----|\n| Literal path | `C:\\Users\\User\\file.txt` |\n| Variable path | `Join-Path $env:USERPROFILE \"file.txt\"` |\n| Relative | `Join-Path $ScriptDir \"data\"` |\n\n**Rule:** Use Join-Path for cross-platform safety.\n\n---\n\n## 7. Array Operations\n\n### Correct Patterns\n\n| Operation | Syntax |\n|-----------|--------|\n| Empty array | `$array = @()` |\n| Add item | `$array += $item` |\n| ArrayList add | `$list.Add($item) | Out-Null` |\n\n---\n\n## 8. JSON Operations\n\n### CRITICAL: Depth Parameter\n\n| ❌ Wrong | ✅ Correct |\n|----------|-----------|\n| `ConvertTo-Json` | `ConvertTo-Json -Depth 10` |\n\n**Rule:** Always specify `-Depth` for nested objects.\n\n### File Operations\n\n| Operation | Pattern |\n|-----------|---------|\n| Read | `Get-Content \"file.json\" -Raw | ConvertFrom-Json` |\n| Write | `$data | ConvertTo-Json -Depth 10 | Out-File \"file.json\" -Encoding UTF8` |\n\n---\n\n## 9. Common Errors\n\n| Error Message | Cause | Fix |\n|---------------|-------|-----|\n| \"parameter 'or'\" | Missing parentheses | Wrap cmdlets in () |\n| \"Unexpected token\" | Unicode character | Use ASCII only |\n| \"Cannot find property\" | Null object | Check null first |\n| \"Cannot convert\" | Type mismatch | Use .ToString() |\n\n---\n\n## 10. Script Template\n\n```powershell\n# Strict mode\nSet-StrictMode -Version Latest\n$ErrorActionPreference = \"Continue\"\n\n# Paths\n$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path\n\n# Main\ntry {\n # Logic here\n Write-Output \"[OK] Done\"\n exit 0\n}\ncatch {\n Write-Warning \"Error: $_\"\n exit 1\n}\n```\n\n---\n\n> **Remember:** PowerShell has unique syntax rules. Parentheses, ASCII-only, and null checks are non-negotiable.\n"}