Skip to content

What PowerShell Is

Scope: what PowerShell is, where it's used, and whether it's worth your time. Not a tutorial — that starts with Your First Commands.

The one-sentence version

PowerShell is a command shell and scripting language where commands pass structured objects to each other instead of plain text.

The problem it solves

In Bash, ps aux | grep python passes text down the pipe — you then carve it up with awk and hope the columns never shift. In PowerShell, Get-Process returns process objects with .Name, .CPU, .Id properties, and the next command reads those properties directly. No text parsing, no column counting, no brittle regex.

This makes PowerShell the natural shell for administering systems: users, services, files, registry, cloud resources — everything is an object you can filter, sort, and act on.

Two PowerShells (read this once)

Windows PowerShell 5.1 PowerShell 7+
Ships with Windows 10/11, Server Installed separately
Runs on Windows only Windows, Mac, Linux
Command powershell.exe pwsh / pwsh.exe
Status Frozen (no new features) Current, actively developed

Learn PowerShell 7 (pwsh). It's cross-platform, faster, and where all new work happens. Windows PowerShell 5.1 still lurks on every Windows box (some Windows-only modules need it), so you'll meet both — now you know which is which.

Where PowerShell actually lives

  • Windows administration: managing users, services, scheduled tasks, the registry, IIS, Active Directory, Exchange.
  • Azure and Microsoft 365: the Az modules are the primary automation surface for Azure.
  • CI/CD on Windows: build agents, deploy scripts, release pipelines.
  • Cross-platform scripting: PowerShell 7 on Mac/Linux for teams standardized on one shell language.

What PowerShell is not

  • Not a Bash replacement on Linux. It works there, but the Linux world speaks Bash — use the local language.
  • Not fast to start. Spinning up pwsh takes noticeably longer than bash. Fine for scripts, noticeable for one-liners in tight loops.
  • Not statically typed. It's dynamically typed like Python; types are there when you want them, invisible when you don't.
  • Not subtle about verbosity. Get-ChildItem vs ls, Where-Object vs grep — the long names are deliberate (Verb-Noun, discoverable), with short aliases for interactive use.

Should you learn it?

Worth it if you:

  • Manage Windows machines or Azure (then it's not optional — it's the job)
  • Want one scripting language across Windows/Mac/Linux
  • Like the objects-in-a-pipeline model

Probably overkill if you:

  • Live entirely on Linux/macOS (Bash + Python cover you)
  • Only need quick one-off commands (the learning curve pays off in scripts, less in one-liners)

Check

You can explain, in your own words:

  • [ ] The difference between objects and text in a pipeline
  • [ ] Windows PowerShell 5.1 vs PowerShell 7
  • [ ] One place PowerShell is the obvious right tool

Next: Installing PowerShell.