PowerShell is a command shell, scripting language and automation framework built on .NET. Its defining feature is that the pipeline carries objects rather than text: Get-Service returns service objects with typed properties, so filtering, sorting, grouping and exporting are property operations instead of string surgery. That single difference removes the parsing layer that dominates traditional shell scripting, and it is why PowerShell one-liners stay readable as they get more capable.
The language is built around a discoverable command model. Every command is a Verb-Noun cmdlet, Get-Command finds them, Get-Help documents them with examples, and Get-Member shows exactly what an object exposes — which means an engineer can work out an unfamiliar API from the console rather than from documentation. Beneath that, the full .NET type system is reachable: you can instantiate types, call static and instance members, handle events and load assemblies when no cmdlet covers what you need. Modules package all of this for distribution, and the PowerShell Gallery and internal repositories make it installable.
Since PowerShell 6 the runtime is cross-platform and open source, so it runs on Linux and macOS alongside Windows. In practice it is the automation layer for Windows Server, Active Directory, Exchange, Microsoft 365, Azure and Intune; the scripting surface inside many build and deployment systems; and increasingly a general-purpose tool for engineers who want structured output from their automation rather than text they have to re-parse.
Why this skill matters now
Most enterprises are not homogeneous. They run Linux for the platform and Windows for identity, collaboration, file services, endpoint management and a long tail of line-of-business applications — and that Windows estate is administered through PowerShell whether or not anyone planned it that way. Active Directory, Exchange Online, Microsoft 365, Azure and Intune all expose their real capability through modules, and a large part of it exists in no portal at all.
At the same time the boundary that once separated Windows scripting from everything else has gone. PowerShell runs on Linux, has first-class modules for Azure and AWS, executes in containers and pipeline agents, and is a supported connection type in mainstream configuration management tooling. Teams that treated it as a Windows administrator's tool now find it in their CI jobs, their cloud governance automation and their compliance reporting.
What organisations struggle to find is engineers who write PowerShell as engineering rather than as recorded commands: functions with proper parameters, pipeline support, error handling, modules that are versioned and published, and code that has been tested before it touched ten thousand mailboxes.