Re: Windows management tool started to go down the sink...
"Err, you know that formatting input and outputs can also mean things like getting fields in the correct order"
The major advantage of Powershell is that you DO NOT need to keep track of the text position as it passes around objects. In Bash you select parameters from multiple commands piped together using text position often using awk, cut, etc.and that can sometimes be difficult if the text rows have different number of arguments such as iptables logs for example.
A longer list of some Powershell advantages over BASH:
1) Object oriented pipes so that I don't have to format and reparse and be concerned about language settings.
2) Command metadata. PowerShell commands, functions and even *script files* expose metadata about the names, positions, types and validation rules for parameters, allowing the *shell* to perform type coercion, allowing the *shell* to explain the parameters/syntax, allowing the *shell* to support both tab completion and auto-suggestions with no need for external and cumbersome completion definitions.
3) Robust risk management. Look up common parameters -WhatIf, -Confirm, -Force and consider how they are supported by ambient values in scripts you author yourself.
4) Multiple location types and -providers. Even a SQL Server appears as a navigable file system. Want to work with a certain database? Just switch to the sqlserver: drive and navigate to the server/database and start selecting, creating tables etc.
5) Fan-out remoting. Execute the same script transparently and *robustly* on multiple servers and consolidate the results back on the controlling console. Try icm host1,host2,host3 {ps} and watch how you get consolidated, object-oriented process descriptions from multiple servers.
6) Workflow scripting. PowerShell scripts can (since v3) be defined as workflows which are suspendable, resumable and which can pick up and continue even across system restarts.
7) Parallel scripting. No, not just starting multiple processes, but having the actual *script* branch out and run massively parallel.
8) True remote sessions where you don't step into and out of remote sessions but actually controls any number of remote sessions from the outside.
9) PowerShell web access. You can now set up a IIS with PWA as a gateway. This gives you a firewall-friendly remote command line in any standards compliant browser.
10) Superior security features, e.g. script signing, memory encryption, proper multi-mode credentials allowing script to be agnostic about authentication schemes which may go way beyond stupid username+password and use smart cards, tokens, OTPs etc.
11) Transaction support right in the shell. Script actions can join any resource manager such as SQL server, registry, message queues in a single atomic transaction. Do that in bash?
12) Strongly typed scripting, extensive data types, e.g first class xml support and regex support right in the shell. Optional static/explicit typing. Real lambdas (script blocks) instead of stupidly relying on dangerous and error prone "eval" functions.
13) Real *structured* exception handling as an alternative to outdated traps (which PowerShell also has). try-catch-finally blocks.
14) Instrumentation, extensive tracing, transcript and *source level* debugging of scripts.
15) Consistent naming conventions covering verb-noun command names, common verbs, common parameter names.