Coding

PowerShell

Avoid common PowerShell mistakes — output behavior, array traps, and comparison operator gotchas.

What it does

Output Behavior Everything not captured goes to output — even without or doesn't stop output — previous uncaptured expressions still output bypasses pipeline — use for display only, not data Assign to to suppress — cast also suppresses —

The skill document

Output Behavior

  • Everything not captured goes to output — even without return or Write-Output
  • return doesn't stop output — previous uncaptured expressions still output
  • Write-Host bypasses pipeline — use for display only, not data
  • Assign to $null to suppress — $null = SomeFunction
  • [void] cast also suppresses — [void](SomeFunction)

Array Gotchas

  • Single item result is scalar, not array — @(Get-Item .) forces array
  • Empty result is $null, not empty array — check with if ($result) carefully
  • Array unrolling in pipeline — @(1,2,3) | ForEach sends items one by one
  • += on array creates new array — slow in loops, use [System.Collections.ArrayList]
  • , is array operator — ,$item wraps single item in array

Comparison Operators

  • -eq, -ne, -gt, -lt — not ==, !=, >, <
  • -like with wildcards, -match with regex — both return bool
  • -contains for array membership — $arr -contains $item, not $item -in $arr (though -in works too)
  • Case-insensitive by default — -ceq, -cmatch for case-sensitive
  • $null on left side — $null -eq $var prevents array comparison issues

String Handling

  • Double quotes interpolate — "Hello $name" expands variable
  • Single quotes literal — '$name' stays as literal text
  • Subexpression for complex — "Count: $($arr.Count)" for properties/methods
  • Here-strings for multiline — @" ... "@ or @' ... '@
  • Backtick escapes — `n for newline, `t for tab

Pipeline

  • $_ or $PSItem is current object — same thing, $_ more common
  • ForEach-Object for pipeline — foreach statement doesn't take pipeline
  • -PipelineVariable saves intermediate — Get-Service -PV svc | Where ...
  • Pipeline processes one at a time — unless function doesn't support streaming

Error Handling

  • $ErrorActionPreference sets default — Stop, Continue, SilentlyContinue
  • -ErrorAction Stop per command — makes non-terminating errors terminating
  • try/catch only catches terminating — set ErrorAction Stop first
  • $? is last command success — $LASTEXITCODE for native commands

Common Mistakes

  • No space before { in ifif($x){ works but if ($x) { preferred
  • = is assignment in conditions — use -eq for comparison
  • Function return array unrolls — return ,@($arr) to keep array
  • Get-Content returns lines array — -Raw for single string
  • Select-Object creates new object — properties are copies, not references

Cross-Platform

  • pwsh is PowerShell 7+ — powershell is Windows PowerShell 5.1
  • Paths use / or \Join-Path for portable
  • Environment vars: $env:VAR — works on all platforms
  • Aliases differ across platforms — ls, cat may not exist, use full cmdlet names

Related skills

Check calendars, find open times, and manage Google Calendar events with confirmation before every change.

by Jay81 installs33 stars

Save, search, organize, and manage Get Notes content and knowledge bases through explicit commands.

755 installs66 stars

Build and operate a testable learning plan with practice, spaced review, transfer checks, and durable local records.

by Iván93 installs3 stars

Learn a topic through level checks, adaptive explanations, retrieval practice, and review across sessions.

270 installs8 stars

Discover and trade Polymarket crypto fast markets using CEX momentum or a custom signal.

262 installs50 stars

Extract email dates, links, and deadlines for review, then create or update tracked Google Calendar events.

236 installs5 stars

More from Iván

Browse all skills

Write, debug, and tune Java and JVM systems with JDK-aware code and diagnostic steps.

by Iván130 installs9 stars

Design and critique visual artifacts using measurable rules for hierarchy, spacing, type, color, and layout.

by Iván137 installs5 stars

Diagnose CSS mechanics and produce targeted fixes or complete stylesheets for the chosen stack.

by Iván97 installs5 stars

Architect, troubleshoot, secure, and cost-control AWS infrastructure with explicit cost and blast-radius guidance.

by Iván138 installs2 stars

Diagnose, validate, transform, and evolve JSON payloads across parsers, schemas, storage, and large files.

by Iván112 installs3 stars

Build and operate a testable learning plan with practice, spaced review, transfer checks, and durable local records.

by Iván93 installs3 stars