I'm guessing you haven't used PowerShell yet? ;-)
Whereas POSIX shells can only output text results, PowerShell can output objects. Furthermore you can pipe these object streams to other commands; no need for some awkward awk command or text parsing in the middle of your pipe.
CSV, JSON, and XML processing are a breeze. You also have access to the entire .NET library (or Mono on MacOS and Linux). This enables some very powerful capabilities.
Say, for example, you have a directory full of files, some are CSV files containing user info. You want to print out the values of the column FirstName for only CSV files created after March 1st
Get-ChildItem -Path . -Filter *.csv |
? { $_.CreationTime -ge "03/01/2018" } |
% { Import-Csv -Path $_.FullName |
% { $_.FirstName }
}
NOTE: ? is an alias for the filter cmdlet, % is foreach, and $_ refers to the current item in the stream.
The same script in Bash is a whole lot harder to achieve. PowerShell has consistent syntax, intelligible naming, and Intellisense for every command at the CLI. And this is just a trivial snippet that barely touches all of PowerShell's capabilities.