Install any skill in seconds. Free to start, no credit card required.
Get Started Free →PowerShell Windows patterns. Critical pitfalls, operator syntax, error handling.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 53% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 22% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 113% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 104% | 0% |
> Critical patterns and pitfalls for Windows PowerShell.
| ❌ Wrong | ✅ Correct | |----------|-----------| | if (Test-Path "a" -or Test-Path "b") | if ((Test-Path "a") -or (Test-Path "b")) | | if (Get-Item $x -and $y -eq 5) | if ((Get-Item $x) -and ($y -eq 5)) |
Rule: Each cmdlet call MUST be in parentheses when using logical operators.
| Purpose | ❌ Don't Use | ✅ Use | |---------|-------------|--------| | Success | ✅ ✓ | OK] +] | | Error | ❌ ✗ 🔴 | !] X] | | Warning | ⚠️ 🟡 | ] WARN] | | Info | ℹ️ 🔵 | i] INFO] | | Progress | ⏳ | ...] |
Rule: Use ASCII characters only in PowerShell scripts.
| ❌ Wrong | ✅ Correct | |----------|-----------| | $array.Count -gt 0 | $array -and $array.Count -gt 0 | | $text.Length | if ($text) { $text.Length } |
| ❌ Wrong | ✅ Correct | |----------|-----------| | "Value: $($obj.prop.sub)" | Store in variable first |
Pattern:
$value = $obj.prop.sub
Write-Output "Value: $value"| Value | Use | |-------|-----| | Stop | Development (fail fast) | | Continue | Production scripts | | SilentlyContinue | When errors expected |
| Pattern | Use | |---------|-----| | Literal path | C:\Users\User\file.txt | | Variable path | Join-Path $env:USERPROFILE "file.txt" | | Relative | Join-Path $ScriptDir "data" |
Rule: Use Join-Path for cross-platform safety.
| Operation | Syntax | |-----------|--------| | Empty array | $array = @() | | Add item | $array += $item | | ArrayList add | $list.Add($item) | Out-Null |
| ❌ Wrong | ✅ Correct | |----------|-----------| | ConvertTo-Json | ConvertTo-Json -Depth 10 |
Rule: Always specify -Depth for nested objects.
| Operation | Pattern | |-----------|---------| | Read | Get-Content "file.json" -Raw | ConvertFrom-Json | | Write | $data | ConvertTo-Json -Depth 10 | Out-File "file.json" -Encoding UTF8 |
| Error Message | Cause | Fix | |---------------|-------|-----| | "parameter 'or'" | Missing parentheses | Wrap cmdlets in () | | "Unexpected token" | Unicode character | Use ASCII only | | "Cannot find property" | Null object | Check null first | | "Cannot convert" | Type mismatch | Use .ToString() |
powershell# Strict mode Set-StrictMode -Version Latest $ErrorActionPreference = "Continue" # Paths $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path # Main try { # Logic here Write-Output "[OK] Done" exit 0 } catch { Write-Warning "Error: $_" exit 1 }
> Remember: PowerShell has unique syntax rules. Parentheses, ASCII-only, and null checks are non-negotiable.
This skill is applicable to execute the workflow or actions described in the overview.
Other measured skills in the registry, with their headline benchmark lift.