powershell-windows
sickn33/agentic-awesome-skills
Master PowerShell Windows syntax, operators, error handling, and critical pitfalls.
What is powershell-windows?
Reference guide for PowerShell scripting best practices on Windows, covering operator syntax rules, null checks, error handling, and common mistakes. Use this when writing or debugging PowerShell scripts to avoid critical errors and follow Windows-specific patterns.
- Explains parentheses requirements for logical operators in conditionals
- Enforces ASCII-only character usage (no Unicode/emoji in scripts)
- Provides null-check patterns to prevent property access errors
- Documents proper error handling with ErrorActionPreference and try/catch blocks
- Shows correct JSON serialization with depth parameters
- Demonstrates file path handling using Join-Path for cross-platform safety
How to install powershell-windows
npx skills add https://github.com/sickn33/agentic-awesome-skills --skill powershell-windowsHow to use powershell-windows
- 1.Review the operator syntax rules section when using -or, -and in conditionals
- 2.Use the null check patterns before accessing object properties or array counts
- 3.Apply the script template as a starting point for new PowerShell scripts
- 4.Reference the common errors table when encountering unexpected token or parameter errors
- 5.Use Join-Path for all file path operations instead of string concatenation
- 6.Always specify -Depth parameter when using ConvertTo-Json for nested objects
- 7.Follow the error handling pattern with try/catch/finally and proper exit codes
Use cases
- Debugging PowerShell scripts that fail with 'parameter or' or 'Unexpected token' errors
- Writing production scripts with proper error handling and null checks
- Converting complex objects to JSON with correct depth specification
- Building cross-platform file path logic using Join-Path
- Implementing strict mode and error preferences in script templates
- Windows system administrators
- PowerShell script developers
- DevOps engineers using PowerShell automation
- Developers debugging PowerShell syntax errors
powershell-windows FAQ
PowerShell parses logical operators differently than other languages. Without parentheses around each cmdlet call, the parser misinterprets the operator as a parameter name, causing 'parameter or' errors.
No. PowerShell scripts should use ASCII characters only. Use ASCII alternatives like [OK], [!], [*] instead of ✅, ❌, ⚠️ to avoid unexpected token errors.
'Stop' fails immediately (development), 'Continue' logs errors but keeps running (production), and 'SilentlyContinue' suppresses errors when they're expected.
Join-Path handles path separators correctly across different contexts and is more robust than manual string concatenation.
It specifies how many levels deep to serialize nested objects. Without it, deep objects get truncated. Use -Depth 10 or higher for complex structures.
Full instructions (SKILL.md)
Source of truth, from sickn33/agentic-awesome-skills.
name: powershell-windows description: "PowerShell Windows patterns. Critical pitfalls, operator syntax, error handling." risk: critical source: community date_added: "2026-02-27"
PowerShell Windows Patterns
Critical patterns and pitfalls for Windows PowerShell.
1. Operator Syntax Rules
CRITICAL: Parentheses Required
| ❌ 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.
2. Unicode/Emoji Restriction
CRITICAL: No Unicode in Scripts
| Purpose | ❌ Don't Use | ✅ Use |
|---|---|---|
| Success | ✅ ✓ | [OK] [+] |
| Error | ❌ ✗ 🔴 | [!] [X] |
| Warning | ⚠️ 🟡 | [*] [WARN] |
| Info | ℹ️ 🔵 | [i] [INFO] |
| Progress | ⏳ | [...] |
Rule: Use ASCII characters only in PowerShell scripts.
3. Null Check Patterns
Always Check Before Access
| ❌ Wrong | ✅ Correct |
|---|---|
$array.Count -gt 0 | $array -and $array.Count -gt 0 |
$text.Length | if ($text) { $text.Length } |
4. String Interpolation
Complex Expressions
| ❌ Wrong | ✅ Correct |
|---|---|
"Value: $($obj.prop.sub)" | Store in variable first |
Pattern:
$value = $obj.prop.sub
Write-Output "Value: $value"
5. Error Handling
ErrorActionPreference
| Value | Use |
|---|---|
| Stop | Development (fail fast) |
| Continue | Production scripts |
| SilentlyContinue | When errors expected |
Try/Catch Pattern
- Don't return inside try block
- Use finally for cleanup
- Return after try/catch
6. File Paths
Windows Path Rules
| 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.
7. Array Operations
Correct Patterns
| Operation | Syntax |
|---|---|
| Empty array | $array = @() |
| Add item | $array += $item |
| ArrayList add | `$list.Add($item) |
8. JSON Operations
CRITICAL: Depth Parameter
| ❌ Wrong | ✅ Correct |
|---|---|
ConvertTo-Json | ConvertTo-Json -Depth 10 |
Rule: Always specify -Depth for nested objects.
File Operations
| Operation | Pattern |
|---|---|
| Read | `Get-Content "file.json" -Raw |
| Write | `$data |
9. Common Errors
| 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() |
10. Script Template
# 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.
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Related skills
More from sickn33/agentic-awesome-skills and the wider catalog.

pptx-official
Create, edit, and analyze PowerPoint presentations by working with their XML structure and conversion tools.

prisma-expert
Expert Prisma ORM guidance for schema design, migrations, query optimization, and multi-database operations.

product-manager-toolkit
Essential tools and frameworks for modern product management, from discovery to delivery.

production-code-audit
Autonomously scan and transform entire codebases to production-grade quality with security hardening and performance optimization.

prompt-engineer
Transforms raw prompts into optimized ones using proven frameworks like Chain of Thought, RISEN, and RODES.

prompt-engineering
Master prompt engineering patterns and techniques to optimize LLM performance and reliability.