From what I understand PowerShell more or less is intended to replace standard BAT files. Maybe you can elaborate a bit as to why it cannot replace BAT files in your view.

While I am no expert on PowerShell, I do like the idea of using introspection to preserve type information between processes connected through a pipe. In Bash you are mostly stuck to using awk to parse the text-only output of some tool, since all type info has been lost.

Does anyone know why they chose the '$' like PHP syntax for variables? Does this facilitate parsing or something? The dollar sign in PHP mostly feels redundant, although the double $$ is sometimes really handy.

I love powershell, it is much more powerful and flexible than batch files, even with the limited branching that batch files support.

I'm well on my way to purging my servers of as many batch files as possible, replacing them with ps scripts, as it gets rid of so many 3rd party tools (like blat). Because it's .NET based, it allows you to write directly to the eventlog, watch directories for changes, access AD, you name it.