This is a read-only archive!

Windows Powershell: Can you handle the power?

MS Powershell is Microsoft's ripoff of Bash. I don't think this is a bad thing necessarily. Bash is a good tool and it's open source. If Windows bundled a sensible, full-fledged Bash and got rid of CMD.EXE I would dance for joy.

So Powershell lets you refer to your home directory as ~ and a bunch of commands have *nix aliases like ls and cat. This is nice for those who have *nix commands firmly internalized. You have to use .\foo.bat to run things in the current directory instead of just foo.bat, which I thought was cool.

But Powershell is not without its problems. For one thing I see this a lot:

The redirection operator '<' is not supported yet.

How hard is it to implement input redirection, really? For another thing, tab completion continues to be broken. When you hit Tab it still doesn't put a slash at the end of the text it inserts. You have to type a manual \ every time you hit Tab, to continue tabbing your way through directories. Thus doubling the number of keystrokes you're forced to type. This continues to drive me crazy. There's a small amount of evidence that someday it'll be fixed, but I'm not holding my breath.

You also usually can't bundle flags together. e.g. rm -rf would have to be rm -r -f in Powershell. This is just annoying enough to bother me, but I can look past it.

Sadly, Powershell also runs slower than a geriatric sea turtle. I don't understand what it's doing that takes 10-20 seconds to startup. Or why tab completion often lags for 5+ seconds itself.

My happiest surprise was when I tried to uninstall Powershell (so I could try version 2) and got this:


This dialog listed every program installed on my computer (in random order) including every Windows Update I'd ever installed. The worst part is that I couldn't even dismiss this dialog as an error. For all I know, uninstalling Powershell could cause every program on my computer to stop working. I've seen stranger things happen in Windows.

A person walking past my office when I saw this would have heard the crazed, maniacal, tortured laughter that only the experience of being forced to use Windows can elicit.

August 15, 2009 @ 7:50 AM PDT
Cateogory: Rants


Dan Ballard
Quoth Dan Ballard on August 15, 2009 @ 8:28 AM PDT

That's extra special. Oh well. Is it at least networked so you can work remotely?

Quoth Brian on August 15, 2009 @ 8:38 AM PDT

Supposedly there's some "remote management support" but I've never used it. I can't even figure out what it is.

Dan Ballard
Quoth Dan Ballard on August 15, 2009 @ 1:13 PM PDT

Or how to connect to it as ubiquitously as ssh. One might almost wonder why they built it. I mean if you are at the windows box you already have the GUI to work with, one of the larger benefits of a text interface is the low bandwidth option of remote control it allows. Ah well

Quoth Bleys on August 15, 2009 @ 8:03 PM PDT

Sounds like a ripoff of PowerThirst except not awesome.

When God gives you lemons, FIND A NEW GOD.

Quoth omouse on September 19, 2009 @ 3:44 PM PDT

powershell deals with objects not just plain text. I think that's worth whatever other pains there are.

Quoth on October 07, 2010 @ 12:21 PM PDT

Meh, I could out-automate even a "skilled" PowerShell user easily with even a basic UNIX shell. Microsoft's poorly-done copy of a UNIX shell doesn't impress me, even after having given this "shell" a two-day marathon tryout session to make sure it was worthwhile.

Nope. Better off using a UNIX shell. Still far FAR more powerful and can run circles around PowerShell.

As a programmer, I know the potential for power in object oriented design. I put a heavy emphasis on C++ in my work.

But I also know where OO is needed and where it's pretty much a gimmick. PowerShell's OO is a gimmick. I could implement OO in a UNIX shell simply by using Python or Ruby.

The only difference between OO in a UNIX shell and OO in PowerShell is PowerShell makes the poor design decision to have everything and its dog as a builtin.

A good way to sum up PowerShell in a nutshell is to simply call it "cmd with .NET dependencies and a very crappy POSIX-ripoff frontend."

UNIX is not just plaintext. Far from it. Vast majority of data one might even work with in a shell script is straight up binary from or to device nodes.