As someone who'swhose career focused on Windows enterprise development from 1997 - 2010, the obvious answer would be PowershellPowerShell for all the good reasons given abovepreviously (e.g. It, it is part of MS'Microsoft's enterprise strategy; it integrates well with Windows/COM/.NET; and using objects instead of files provides for a "richer" coding model). For that reason I'd been using and promoting PowershellPowerShell for the last 2two years or so, with the express belief I was following thethe "Word of Bill."
However, as a pragmatist I'm no longer sure PowershellPowerShell is such a great answer. While it's an excellent Windows tool and provides a much needed step towards filling the historic hole that is the Window command line, as we all watch MS'Microsoft's grip on consumer computing slip it seems increasingly likely that MSMicrosoft has a massive battle ahead to keep it'sits OS as important to the enterprise of the future.
Indeed, given I find my work is increasingly in heterogeneous environments, I'm finding it much more useful to use bashBash scripts at the moment, as they not only work on Linux, Solaris and Mac OS X, but they also work—with the help of Cygwin—on Windows.
So if you buy into the belief that the future of the OS is commoditized rather than a monopolized, then it seems to make sense to opt for an agile development tool strategy that keeps away from proprietary tools where feasible. If however you see your future being dominated by all-that-is-Redmond then go for PowershellPowerShell.