I work in IT and have to manage both Unix and Windows servers and some occasional desktops and I respectfully disagree - PowerShell and WMI are better than unix tools and SSH for managing systems via the commandline once you know them.
With PowerShell Microsoft took a step back and basically said if we designed a whole shell and all of the commands from scratch what can we achieve for modern server command-line management? What they came up with is an object-oriented approach where you do not need to parse text with your pipes but actually send whole objects with all of their properties - and you can still query against those properties even further down the piping chain. Not only that, since they designed all of the commands centrally and at nearly the same time they all pipe perfectly well into each other. It has great support for csvs to quickly pull raw data in and out from Excel where you can do a bit more fine-tuning as well. For their server commands they tend to fit the get- set- mould and they do tab completion of not just the commands but all of the commandline options/flags as well. They have the help command which is the equivilent as man too. The power of this is amazing - particularly in server maagement. Here is a few examples:
Let's say I want to change the mailbox quota for all users in the Boston office on Exchange - I can do this:
get-mailbox -filter {office -eq "Boston" } | set-Mailbox -UseDatabaseQuotaDefaults:$false -IssueWarningQuota 800MB -ProhibitSendQuota 900MB -ProhibitSendReceiveQuota 1GB
Let's do some bulk account creation from a CSV:
The following one-liner creates mailboxes for all team members listed in an Avalanche.csv file, which contains NHL Avalanche team roster information with the following column format:
Pos,No,Player,Age,Ht,Wt,Born,Exp,Birth City
$password = Read-Host "Enter password" -AsSecureString
import-csv Avalanche.csv | foreach {new-mailbox -alias "avalanche$($_.No)" -Name $_.Player -password $password -database "Mailbox Database" -org Users -UserPrincipalName "avalanche$($_.No)@example.com"}
These are the sorts of tasks that were really hard to do on Unix where you had to use sed and awk to massage text outputs of commands as you piped them around etc. When you go OO and design all of the commands around it you get an amazing experience. And using WMI you can run these commands not just on the local system but on any system where you have appropriate permission and have not firewalled it off on the local network.
And we are not going to get into the great Group Policy changes with recent versions of Windows - I can set any registry key or file permission or run any script (powershell or vb or even batch) on a system/user matching a wide variety of detailed criteria (OU, Site, Security Group, etc). And that is even before the enterprise management tools like SCCM or Altiris are figured in. I have had to manage a bunch of Macs before and I'd take a bunch of Windows 7 PCs and even Server 2008 R2 Boxes over them any day now that I know how to do it properly...