Est. 2006 Beginner

PowerShell

Microsoft's object-oriented command shell and scripting language, built on .NET, whose pipeline passes structured objects instead of plain text.

Created by Jeffrey Snover, Bruce Payette, and James Truher (Microsoft)

Paradigm Multi-paradigm: imperative/procedural, object-oriented, functional, and pipeline-based
Typing Dynamic and strong, built on the .NET type system with optional type annotations
First Appeared 2006
Latest Version PowerShell 7.6 (LTS), released March 18, 2026 and built on .NET 10; the prior release, PowerShell 7.5, shipped in January 2025 on .NET 9

PowerShell is Microsoft’s command-line shell and scripting language, built on .NET, whose defining idea is an object pipeline: instead of passing plain text between commands the way traditional Unix shells do, PowerShell passes structured .NET objects. This single design decision reshapes how automation works — a command’s output is a rich object with named properties and methods, not a block of text that the next command must parse. First released as Windows PowerShell 1.0 on November 14, 2006, it has grown from a Windows-only administration tool into a cross-platform, open-source language that runs on Windows, macOS, and Linux.

History and Origins

PowerShell began as a research effort led by Jeffrey Snover, who in 2002 circulated a white paper now known as the “Monad Manifesto.” Snover’s argument was that Windows administration suffered because its shells were built around text. Unix tools could be composed because they shared a lingua franca of text streams, but Windows configuration lived in structured stores like the registry, WMI, and the .NET object model — places where text-parsing pipelines fit poorly. His proposed answer, codenamed Monad, was a shell whose pipeline carried objects rather than bytes.

Monad was first shown publicly at Microsoft’s Professional Developers Conference in 2003, moved through private beta, and reached public beta in 2005. In April 2006 Microsoft renamed the project Windows PowerShell, and version 1.0 shipped on November 14, 2006, supporting Windows XP SP2, Windows Server 2003, and Windows Vista, with roughly 130 cmdlets out of the box. The language was designed by Snover together with Bruce Payette and James Truher, among others.

Design Philosophy

PowerShell’s philosophy can be summarized in a few connected ideas:

  • Objects, not text. The pipeline passes live .NET objects, so a command like Get-Process yields process objects you can filter, sort, and inspect by property — without writing fragile string-parsing code.
  • Discoverability. Commands follow a strict Verb-Noun naming convention (Get-Item, Set-Location, Stop-Service), and the approved-verb list keeps that vocabulary consistent. Built-in cmdlets like Get-Command, Get-Help, and Get-Member let users explore what is available and what an object exposes.
  • Consistency. Cmdlets share common parameter conventions (such as -WhatIf, -Confirm, and -ErrorAction), so once you learn the patterns they apply broadly across the ecosystem.
  • Administration first, but a real language. PowerShell is built for operators automating systems, yet it is also a full scripting language with functions, modules, error handling, and classes.

Key Features

  • The object pipeline — the central feature. Get-ChildItem | Where-Object Length -gt 1MB | Sort-Object Length filters and sorts file objects by their real properties, no text parsing required.
  • Cmdlets and modules — compiled or script-based commands, packaged into modules that can be discovered and installed (the PowerShell Gallery is the central repository).
  • Deep .NET integration — any .NET type can be used directly, so scripts can reach into the full framework when cmdlets are not enough.
  • Remoting — built-in remote execution (introduced in 2.0) lets a single session manage many machines.
  • Desired State Configuration (DSC) — a declarative model, added in 4.0, for describing and enforcing system configuration.
  • Cross-platform shell (pwsh) — since the move to .NET Core, the executable pwsh runs the same scripting language on Windows, macOS, and Linux.

A short example shows the Verb-Noun style and the object pipeline at work:

1
2
3
4
5
6
7
# Get running processes using more than 100 MB and show the top five
Get-Process |
    Where-Object { $_.WorkingSet -gt 100MB } |
    Sort-Object WorkingSet -Descending |
    Select-Object -First 5 Name, Id, WorkingSet

Write-Output "Hello, World!"

Each stage receives real process objects — $_.WorkingSet reads a property, not a parsed column of text.

Evolution

PowerShell’s history splits into two broad eras.

Windows PowerShell (1.0–5.1). This Windows-only line, built on the full .NET Framework, grew steadily: 2.0 (2009) added remoting, modules, and the ISE; 3.0 (2012) and 4.0 (2013) refined the language and introduced DSC; 5.0 and 5.1 (2016) added classes and package management. Version 5.1 is the final release of this line and still ships in-box with Windows.

Open-source, cross-platform PowerShell (6.0 onward). On August 18, 2016, Microsoft open-sourced PowerShell under the MIT License and rebuilt it on .NET Core, making it genuinely cross-platform. PowerShell Core 6.0 arrived on January 10, 2018. With PowerShell 7.0 (March 4, 2020) Microsoft dropped the “Core” label, signaling that the pwsh-based, cross-platform edition was now the primary version. The 7.x series has continued on a regular cadence, with PowerShell 7.5 reaching general availability in January 2025 atop .NET 9, followed by PowerShell 7.6 — a Long-Term Support release built on .NET 10 — on March 18, 2026.

EraVersionsRuntimePlatforms
Windows PowerShell1.0 – 5.1.NET FrameworkWindows only
PowerShell Core6.0 – 6.2.NET CoreWindows, macOS, Linux
PowerShell7.0+.NET (Core 3.1 / .NET 5+)Windows, macOS, Linux

Current Relevance

PowerShell is one of the most widely used automation languages in enterprise computing. It remains the default tool for Windows administration, the backbone of Azure cloud management through the Az module, and a common scripting layer in DevOps pipelines on every major platform. Its development happens in the open on GitHub, with regular releases distributed through package managers, the PowerShell Gallery for modules, and official Docker images. The shift to cross-platform .NET means PowerShell is no longer a Windows-only curiosity but a portable scripting option that Linux and macOS users can adopt as well.

Why It Matters

PowerShell’s lasting contribution is the object pipeline. For decades, shell scripting meant composing programs through text — powerful, but brittle, since each tool had to print parseable output and each script had to parse it correctly. PowerShell asked what a shell would look like if its pipeline carried structured data instead, and the answer influenced how a generation of administrators think about automation. That idea has since echoed in newer shells like Nushell, which also build pipelines around structured data rather than raw text. By marrying a discoverable, consistent command model to the full power of .NET, PowerShell turned shell scripting on Windows from an afterthought into a first-class engineering discipline — and then carried that model to the rest of the computing world.

Timeline

2002
Jeffrey Snover publishes the "Monad Manifesto", a white paper laying out a new automation model and command shell for Windows built on what would become .NET.
2003
Monad is first demonstrated publicly at Microsoft's Professional Developers Conference (PDC) in 2003, followed by private and (in 2005) public beta releases.
2006
Microsoft renames Monad to Windows PowerShell, and PowerShell 1.0 is released on November 14, 2006 for Windows XP SP2, Server 2003, and Vista, shipping with roughly 130 cmdlets.
2009
PowerShell 2.0 is released and bundled with Windows 7 and Windows Server 2008 R2, adding remoting, modules, background jobs, and the Integrated Scripting Environment (ISE).
2012
PowerShell 3.0 ships with Windows 8 and Windows Server 2012, with workflows, scheduled jobs, and major improvements to the language and ISE.
2013
PowerShell 4.0 introduces Desired State Configuration (DSC), a declarative model for configuration management, alongside Windows 8.1 and Server 2012 R2.
2016
PowerShell 5.0 adds classes and package management; on August 18, 2016 Microsoft open-sources PowerShell under the MIT License and makes it cross-platform. Version 5.1 becomes the last release of the Windows-only "Windows PowerShell" line.
2018
PowerShell Core 6.0 is released on January 10, 2018, rebuilt on the cross-platform, open-source .NET Core and running on Windows, macOS, and Linux.
2020
PowerShell 7.0 is released on March 4, 2020, dropping "Core" from the name and built on .NET Core 3.1 to unify the cross-platform editions as the forward-looking version.
2025
PowerShell 7.5 reaches general availability in January 2025, built on .NET 9, continuing the regular cadence of cross-platform releases.
2026
PowerShell 7.6 reaches general availability on March 18, 2026 as a Long-Term Support (LTS) release, built on .NET 10.

Notable Uses & Legacy

Windows system administration

PowerShell is the primary automation and configuration tool for Windows administrators, used to manage users, services, the registry, event logs, and the file system, and to script repetitive operational tasks across fleets of machines.

Microsoft Azure (Az module)

The Azure PowerShell "Az" module lets engineers provision and manage cloud resources — virtual machines, storage, networking, and more — through cmdlets, often as part of infrastructure-as-code and deployment automation.

Microsoft 365, Exchange, and Active Directory

Administrators rely on dedicated PowerShell modules to manage Exchange mailboxes, Microsoft 365 tenants, and Active Directory identities at scale, where the GUI alternatives would be slow or impractical.

DevOps and CI/CD pipelines

Because PowerShell runs cross-platform and integrates with .NET, it is widely used as a scripting glue in build and release pipelines (for example in Azure DevOps and GitHub Actions) for build, test, and deployment steps.

Package management with Chocolatey

Chocolatey, a popular Windows package manager, is built around PowerShell, using it to define and run install, upgrade, and uninstall scripts for thousands of software packages.

Language Influence

Influenced By

ksh Perl C# SQL DCL Tcl

Influenced

Nushell

Running Today

Run examples using the official Docker image:

docker pull mcr.microsoft.com/powershell:latest

Example usage:

docker run --rm mcr.microsoft.com/powershell:latest pwsh -c "Write-Output 'Hello, World!'"
Last updated: