Why I Love Powershell
PowerShell, a better shell, after 30 years of unix crap
Here's reasons why PowerShell is a magnitude better than bash + unix util bags.
consistent command names
PowerShell has proper command names. Names are full and meaningful. Example:
they follow a verb-noun design. I don't like it, but at least it's consistent and not cryptic.
Systematic Alias and Name Completion
PowerShell has systematic alias and name completion. Completion works for parameter names too. For example:
Get-ChildItem has abbrev
ls for cmd.exe and bash adoption)
[see PowerShell: List of Aliases]
Consistent Parameter Syntax, Parameter Names, Parameter Semantic
PowerShell's parameters, are consistent in syntax, name, and meaning, of their order, position, default values, for ALL commands.
-Recurse has the same meaning for every command, and every command that recurses have that parameter.
are parameters for any command that takes a path,
and path expansion is handled in a universal way. Boolean parameters are handled consistently.
Unlike the unix situation where every command has its own wild parameter names and meaning. [see Unix Pipe as Functional Language]
PowerShell documentation is superb, well written, consistent format, with plenty code examples. I'd rate PowerShell doc to be one of the best in computing. Of the 10 programing language plus tens of programing tool docs of past 30 years i've read, i'd rank PowerShell's document to be among top 5 best. unix man page is the extreme opposite, ranks the worst. [see Which Programing Language Has Best Documentation?]
Strongly Typed, But Type Optional
PowerShell has formalized data types and pipe. It's not just string. PowerShell deal with objects, with full programing language system the dot NET backbone. Numbers, string, and other argument values, expression, all have proper type, and object with methods. You can annotate types when writing a function that prevents many errors.
General Computation, Not Just Text Processing
PowerShell commands are more general.
Get-ChildItem is not just for listing directory, but for listing any list and tree structures.
For example, registry, environment variables.
PowerShell is now cross-platform since 2016. Works on linux and macOS too.