When comparing MS PowerShell vs POSIX shell, the Slant community recommends POSIX shell for most people. In the question“What is the best programming language to learn first?” POSIX shell is ranked 59th while MS PowerShell is ranked 64th. The most important reason people chose POSIX shell is:
There's usually not much more to it than a couple of built-ins, and the rest is userland commands.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Helpful Help
The help system is designed to evolve over time; running update-help
downloads the latest content.
When searching for help on items, you can simply type help commandname
to get information about a command.
If you're not sure what you're looking for, but have a rough idea, you can search on partial command names, or even specify specific verbs to get a list of commands potentially of interest; e.g. help -verb write
.
The information in help gives a good overview of the commands you're looking at, along with code examples, so you can see real-world usage without resorting to the web.
Pro Splatting
When calling a method with multiple parameters, rather than passing one variable per parameter you're able to "splat" one variable to the method, with the parameters taking their values from its properties.
Pro Pipeline
Commands can be chained via the pipeline, allowing output from one to be cleanly fed as input to the next.
Pro Chocolatey Package
PowerShell is installable through Chocolatey.
Pro Extensible
The language can wrap and interact with code written in other language's, making it highly extensible.
Pro Multi-Platform (ish)
Though Windows Powershell only works on Windows, the open source implementation Pash (http://pash.sourceforge.net/) allows the same language to be run on other OSes.
Pro Easy to learn
There's usually not much more to it than a couple of built-ins, and the rest is userland commands.
Pro Portable
Runs on literally all POSIX platforms (or should).
Cons
Con Very verbose
The commands themselves, as well as the output and error messages, are VERY verbose