I saw this Cheat Sheet for using Windows PowerShell (MSH / Monad) to help people who are used to cmd.exe to easily move to this new syntax.
PowerShell is really great for doing complex tasks with it's object approach to data, but there seems to be somewhat of a learning curve to this syntax. I haven't looked into it, but just from looking at these examples it looks like a confusion of cmdlets and pipes and switches, and this "$_" thingy.
So, dir is now replaced by get-childitem (dir still works though as an alias). That's ok, its a more general naming convention. But what you could do easily in cmd.exe now seems a bit more tricky. Sorting by date was "dir /ad", now it onvolves a pipe and a where statement and this $_ thing, and becomes "get-childitem | where { $_.MshIsContainer }". Quite a handful right there.
It seems a lot more general and powerful, though I'd have to read up on that syntax before I could get anything done with it.
Here's an example from the same page of a dir function that sorts by name with folders on the top:
function dir {
get-childitem $args -force |
sort @{e={$_.MshIsContainer}; asc=$false},
@{e={$_.Name}; asc=$true}
}
Which is the same as "dir /OGn" in cmd.exe