PowerShell
In short: A modern, object-based command-line and scripting language from Microsoft for Windows (and now cross-platform).
In more detail: Unlike classic shells such as CMD, which pass plain text between commands, PowerShell works with structured .NET objects — a command can directly access properties of a previous command’s result, without having to parse text. Heavily used for system administration and automation on Windows.
In Depth
Object-based pipelines
Get-Process | Where-Object { $_.CPU -gt 100 } | Sort-Object CPU -Descending
# Use an object's properties directly further on
Get-ChildItem C:\Project | Where-Object Extension -eq ".log" | Remove-ItemIn a classic Unix shell or CMD, every command outputs plain text, and the next command in a pipe (|) has to parse this text again to get the desired information (e.g. with grep/awk/regular expressions) — if a command’s text format changes even slightly, scripts built on it break. PowerShell instead passes structured .NET objects with named properties — in the example above, Get-Process returns a list of process objects, and Where-Object filters directly based on the CPU property, with no text parsing at all. This makes complex pipelines considerably more robust against changes in output format.
Cmdlets and naming convention
Cmdlets (pronounced “command-lets”, PowerShell commands) follow a unified Verb-Noun naming convention (Get-Process, Stop-Service, New-Item, Remove-Item), which makes the language considerably more predictable than the often cryptic, historically grown names of classic Unix commands (ls, grep, awk — whose names follow no unified pattern and simply have to be memorised). Microsoft maintains a fixed list of allowed verbs (Get, Set, New, Remove, Start, Stop and a few more), so even unfamiliar cmdlets can be intuitively understood.
Cross-platform development
Since PowerShell Core (version 6+, 2018), PowerShell has also been open source and usable cross-platform (Windows, Linux, macOS), no longer just a pure Windows tool — part of Microsoft’s broader openness towards open source and cross-platform development. The older, Windows-exclusive “Windows PowerShell” (5.1 and earlier) continues to be maintained in parallel, for compatibility with older scripts, while new development happens on PowerShell Core (today simply “PowerShell 7+”).
Use cases
PowerShell is heavily used for system administration: managing user accounts in Active Directory, automating server configuration, scheduled maintenance tasks, or as an automation language in CI/CD pipelines for Windows-heavy projects. For pure development tasks (not system administration), many developers still prefer Bash/Python, even on Windows — usually via WSL (Windows Subsystem for Linux), which provides a real Linux environment alongside Windows.