What differentiates Powershell from general scripting languages is that it
is intended as a shell and hence works somewhat close to the OS, the filesystem, or whatever you are doing just now.
I can't speak for the author of Pash, but for me (and I like bash) is that unlike in the typical Unix shells, you don't pipe and work with text, you do it with fully fledged objects.
So needless to say (if you can get over the somewhat icky syntax) you can do some very neat and powerful stuff with a minimum of effort.
Want to kill all processes starting with z? Easy.
Get-Process | where {$_.Name -like "x*" } | kill
Want to kill the biggest memory offender on the system? Also easy.
Get-Process | Sort-Object workingset -descending | Select-Object -First 1 | kill
Want to list all running services? Also easy, just filter:
Get-Service | where {$_.Status -eq "Running" }
Want it exported to for instance csv? Sure.
Get-Service | where {$_.Status -eq "Running" } | Export-Csv services.csv
Like I said. The syntax leaves something to be desired, but the concept of piping objects is pretty powerful in a shell, and I like how you can add providers, so you can use this with the filesystem, registry, database-servers, whatever and just navigate it naturally and use the same syntax and commands for most processing.
It may not be for everyone, but it certainly has its place.