Well they don't adhere to Unix because they're trying to be better.
Pipes pass _objects_ around in Powershell, and the entirety of .NET libraries is available for use in Powershell... including plugins and everything.
http://www.tomsitpro.com/articles/powershell-piping-filterin...
New Microsoft features are available too, like V-Server integration, Package Management through Chocolatey and so forth.
I am not exactly a Powershell guru, but its definitely evolving in a way superior to BASH scripting. I mean seriously, BASH is so backwards that I can't imagine why ANYONE would seriously recommend taking cues from it.
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.htm...
But when it comes down to writing something that others use, you can almost always rely on BASH being installed on their machine.
The other shells... not so much. I hear zsh is pretty good though.
Whatever you think of Windows/MS/etc, Powershell is a decently-well-designed, complete language with a number of useful, convenient constructs. For example, here is a native Powershell hashmap (that can be looped over, etc.):
$states = @{"Washington" = "Olympia"; "Oregon" = "Salem"; California = "Sacramento"}
Nice, no?Hmmm.....I think PowerShell blurs the line between shell and full blown programming environment (as in I can build complete WinForms apps in PowerShell).
sh, bash, zsh, korn shell,....
> instead of the common (in UNIX) `$?` to represent the current value in the pipe.
Is that common in UNIX? Can you give an example?