powershell-windows
A guide for advanced PowerShell scripting, focusing on object-oriented piping and robust error handling.
Install
mkdir -p .claude/skills/powershell-windows-harmitx7 && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/14191" && unzip -o skill.zip -d .claude/skills/powershell-windows-harmitx7 && rm skill.zipInstalls to .claude/skills/powershell-windows-harmitx7
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
PowerShell and Windows environment mastery. Object-oriented piping, strict error handling (ErrorActionPreference), PSProviders, active directory querying, credential management, and execution policies. Use when automating Azure, Windows environments, or writing .ps1 scripts.Key capabilities
- →Pass structured .NET class instances between commands
- →Enforce strict halting for automation scripts
- →Bypass execution policy for a single script execution
- →Parse JSON, XML, and CSV natively
- →Extend the file system concept to Registry and Environment Variables
How it works
PowerShell passes structured .NET class instances between commands, enabling direct access to object properties and methods. It enforces strict error handling by setting $ErrorActionPreference to "Stop" to halt script execution on errors.
Inputs & outputs
When to use powershell-windows
- →Automating Windows environment tasks
- →Writing robust .ps1 automation scripts
- →Managing Windows services and processes
- →Querying Active Directory
About this skill
PowerShell — Windows Automation Mastery
Mandatory Pre-Flight Context Inspection
Before writing PowerShell .ps1 scripts or Windows automation commands, you MUST inspect:
- Object Pipeline vs String Parsing Rule (Section 23) → Operate directly on .NET object properties (
Get-Process | Stop-Process); ban string splitting/parsing - Mandatory Script Strict Mode Header (Section 43) → Always declare
$ErrorActionPreference = "Stop"andSet-StrictMode -Version Latestat top of automation scripts - Process-Scoped Execution Policy Bypass (Section 68) → Use process-level policy override (
powershell.exe -ExecutionPolicy Bypass -File ...); ban system-wideSet-ExecutionPolicy Unrestricted
PowerShell — Windows Automation Mastery
1. The Object Pipeline
Unlike Bash where everything is strings (requiring awk/grep), PowerShell passes structured .NET class instances between commands.
# ❌ BAD: Attempting to treat PowerShell like Bash (String Parsing)
Get-Process | Out-String -Stream | Select-String "node" | ForEach-Object { $id = ($_ -split '\s+')[8]; Stop-Process -Id $id }
# ✅ GOOD: Accessing Object Properties Directly
Get-Process -Name "node" | Stop-Process -Force
# Filtering objects (Where-Object)
Get-Service | Where-Object Status -eq 'Running' | Select-Object Name, DisplayName
# Accessing methods natively on the object
$files = Get-ChildItem -Path "C:\logs" -Filter "*.log"
$files | ForEach-Object { $_.Delete() }
2. Strict Error Handling (The Windows equivalent of set -e)
By default, PowerShell prints an error but keeps running. You MUST enforce strict halting for automation scripts.
# Mandatory header for reliable automation scripts
$ErrorActionPreference = "Stop"
Set-StrictMode -Version Latest
try {
# If this fails, it jumps straight to catch block instead of continuing
Copy-Item "C:\Source\configs.json" -Destination "C:\Dest\"
$config = Get-Content "C:\Dest\configs.json" | ConvertFrom-Json
} catch {
Write-Error "Deployment failed during config copy: $_"
exit 1
} finally {
# Cleanup block executes regardless of success or failure
Remove-Item "C:\Dest\temp" -Recurse -ErrorAction Ignore
}
3. Execution Policies & Execution
Windows restricts running .ps1 files by default for security.
# Temporarily bypass the policy for a single script execution (CI/CD pattern)
powershell.exe -ExecutionPolicy Bypass -File .\Deploy-App.ps1
# ❌ HALLUCINATION TRAP: Do NOT instruct users to run `Set-ExecutionPolicy Unrestricted`
# This lowers the permanent security posture of the entire operating system.
# Use Bypass only at the process level.
4. Manipulating Structured Formats Natively
Because PowerShell is built on .NET, parsing JSON, XML, and CSV is native.
# JSON
$config = Get-Content .\appsettings.json | ConvertFrom-Json
$config.Database.ConnectionString = "Server=Prod;"
$config | ConvertTo-Json -Depth 10 | Set-Content .\appsettings.json
# CSV (No AWK needed)
$users = Import-Csv .\users.csv
$users | Where-Object Role -eq "Admin" | Export-Csv .\admins.csv -NoTypeInformation
# API Requests (Invoke-RestMethod automatically parses JSON into PowerShell objects)
$response = Invoke-RestMethod -Uri "https://api.github.com/users/github"
Write-Host "GitHub has $($response.public_repos) public repositories."
5. Providers and Drives
PowerShell extends the "file system" concept to the Registry, Environment Variables, and Certificates.
# Environment variables (Env: drive)
$env:PATH += ";C:\Custom\Bin"
Write-Host $env:COMPUTERNAME
# Registry (HKCU: and HKLM: drives)
Get-ChildItem -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run"
# Certificates (Cert: drive)
Get-ChildItem -Path "Cert:\LocalMachine\My" | Where-Object Subject -match "example.com"
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
- Over-engineering: Proposing complex abstractions or distributed systems when a simpler approach suffices.
- Hallucinated Libraries/Methods: Using non-existent methods or packages. Always
// VERIFYor checkpackage.json/requirements.txt. - Skipping Edge Cases: Writing the "happy path" and ignoring error handling, timeouts, or data validation.
- Context Amnesia: Forgetting the user's constraints and offering generic advice instead of tailored solutions.
- Silent Degradation: Catching and suppressing errors without logging or re-raising.
Slash command: /review or /tribunal-full
Active reviewers: logic-reviewer · security-auditor
❌ Forbidden AI Tropes
- Blind Assumptions: Never make an assumption without documenting it clearly with
// VERIFY: [reason]. - Silent Degradation: Catching and suppressing errors without logging or handling.
- Context Amnesia: Forgetting the user's constraints and offering generic advice instead of tailored solutions.
Review these questions before confirming output:
✅ Did I rely ONLY on real, verified tools and methods?
✅ Is this solution appropriately scoped to the user's constraints?
✅ Did I handle potential failure modes and edge cases?
✅ Have I avoided generic boilerplate that doesn't add value?
🛑 Verification-Before-Completion (VBC) Protocol
CRITICAL: You must follow a strict "evidence-based closeout" state machine.
- ❌ Forbidden: Declaring a task complete because the output "looks correct."
- ✅ Required: You are explicitly forbidden from finalizing any task without providing concrete evidence (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
Pre-Flight Checklist
- Have I reviewed the user's specific constraints and requests?
- Have I checked the environment for relevant existing implementations?
VBC Protocol (Verification-Before-Completion)
You MUST verify existing code signatures and variables before attempting to modify or call them. No hallucination is permitted.
🤖 LLM-Specific Traps
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
- Over-engineering: Proposing complex abstractions or distributed systems when a simpler approach suffices.
- Hallucinated Libraries/Methods: Using non-existent methods or packages. Always
// VERIFYor checkpackage.json/requirements.txt. - Skipping Edge Cases: Writing the "happy path" and ignoring error handling, timeouts, or data validation.
- Context Amnesia: Forgetting the user's constraints and offering generic advice instead of tailored solutions.
- Silent Degradation: Catching and suppressing errors without logging or re-raising.
🏛️ Tribunal Integration (Anti-Hallucination)
Slash command: /review or /tribunal-full
Active reviewers: logic-reviewer · security-auditor
❌ Forbidden AI Tropes
- Blind Assumptions: Never make an assumption without documenting it clearly with
// VERIFY: [reason]. - Silent Degradation: Catching and suppressing errors without logging or handling.
- Context Amnesia: Forgetting the user's constraints and offering generic advice instead of tailored solutions.
✅ Pre-Flight Self-Audit
Review these questions before confirming output:
✅ Did I rely ONLY on real, verified tools and methods?
✅ Is this solution appropriately scoped to the user's constraints?
✅ Did I handle potential failure modes and edge cases?
✅ Have I avoided generic boilerplate that doesn't add value?
🛑 Verification-Before-Completion (VBC) Protocol
CRITICAL: You must follow a strict "evidence-based closeout" state machine.
- ❌ Forbidden: Declaring a task complete because the output "looks correct."
- ✅ Required: You are explicitly forbidden from finalizing any task without providing concrete evidence (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
When not to use it
- →When permanent security posture of the operating system should not be lowered
- →When treating PowerShell like Bash for string parsing
Limitations
- →Execution policies restrict running .ps1 files by default for security
- →Setting ExecutionPolicy Unrestricted lowers the permanent security posture
How it compares
This approach uses object-oriented piping and native parsing for structured formats, which differs from string parsing methods common in Bash or manual data manipulation.
Compared to similar skills
powershell-windows side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| powershell-windows (this skill) | 0 | 1mo | No flags | Intermediate |
| applescript | 28 | 8mo | Review | Advanced |
| bazel-build-optimization | 14 | 2mo | No flags | Advanced |
| home-assistant-manager | 9 | 8mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by Harmitx7
View all by Harmitx7 →You might also like
applescript
martinholovsky
Expert in AppleScript and JavaScript for Automation (JXA) for macOS system scripting. Specializes in secure script execution, application automation, and system integration. HIGH-RISK skill due to shell command execution and system-wide control capabilities.
bazel-build-optimization
wshobson
Optimize Bazel builds for large-scale monorepos. Use when configuring Bazel, implementing remote execution, or optimizing build performance for enterprise codebases.
home-assistant-manager
komal-SkyNET
Expert-level Home Assistant configuration management with efficient deployment workflows (git and rapid scp iteration), remote CLI access via SSH and hass-cli, automation verification protocols, log analysis, reload vs restart optimization, and comprehensive Lovelace dashboard management for tablet-optimized UIs. Includes template patterns, card types, debugging strategies, and real-world examples.
swarm-advanced
ruvnet
Advanced swarm orchestration patterns for research, development, testing, and complex distributed workflows
windows-expert
jackspace
Expert guidance for Windows, PowerShell, WSL interop, and cross-platform development
bash-linux
davila7
Bash/Linux terminal patterns. Critical commands, piping, error handling, scripting. Use when working on macOS or Linux systems.