PowerShell#
PowerShell is a command shell and scripting language originally developed by Microsoft, first released in 2006 as part of Windows. While traditional Unix shells like Bash treat everything as plain text, PowerShell is built on .NET and is fundamentally object-oriented — commands pass structured objects through the pipeline rather than raw strings, which means richer data handling, consistent error management, and no text-parsing gymnastics to extract a value from command output. With PowerShell 7 (formerly PowerShell Core) it became open-source and cross-platform, running on Windows, macOS, and Linux.
We chose PowerShell as the foundation of the PSModule ecosystem because it fits the way we work. The object model is a first-class design decision, not a bolted-on feature — where Bash hands you a string and leaves you to parse it, PowerShell hands you a typed object you can work with directly. Tooling is exceptional: VS Code with the PowerShell extension gives you full IntelliSense backed by .NET types, and tab-completion works on parameter values, not just parameter names — something most shells never achieve. Cross-platform support is genuine: PowerShell 7 runs on Windows, macOS, and Linux, installable via winget, brew, apt, dnf, or an MSI. It is not pre-installed on Linux by default, but that is a far smaller obstacle than Bash and Zsh face on Windows, where they simply aren't available without WSL or a compatibility layer. And on GitHub-hosted runners it is available out of the box, which matters a great deal for the kind of automation we build.
We target the latest Long-Term Support (LTS) release of PowerShell 7. We do not actively pursue Windows PowerShell 5.1 compatibility — where support comes at low effort we accommodate it, but we will not constrain the framework to legacy capabilities. Developers who need to run these tools on systems that only have 5.1 can install PowerShell 7 alongside it.