header image

PowerShell too hard?

Posted by: | August 10, 2010 | 6 Comments |

In an article on the Windows IT Pro site – http://www.windowsitpro.com/article/commentary/Bridging-the-Developer-Admin-Gap.aspx – Paul Thurrott states

But the problem with PowerShell is that it’s so powerful its indecipherable to admins. PowerShell is arguably a full-blown development environment. It consists of a command-line shell, a .NET-based, object-oriented scripting language, and a runtime engine that can optionally be embedded in other applications. For the typically overworked admins and IT pros, PowerShell might be a godsend if they could actually use it. But I was of the mind in 2002—as I am today—that most admins and IT pros have a completely different set of skills and are overworked as it is. To really take advantage of PowerShell, you need to be a developer or learn those skills too. And finding people who have credible administrative and developer skills is quite a trick. If you’re such a person, maybe it’s time to ask for a raise.


Now I disagree totally with the crux of this paragraph for a number of reasons:

  1. PowerShell is not a full-blown development environment. You can do practically anything .NET based with it but just because you can doesn’t mean you should
  2. I know of many Windows administrators who have picked up PowerShell and learnt enough, quickly enough to be very productive and re-pay the time spent learning it many times over. There  is a sufficient body of knowledge available through the web – including articles in Windows IT pro that a PowerShell beginner can find the information they need to help solve their problem
  3. You do not have to be a developer to really take advantage of PowerShell – or any other scripting language. PowerShell is particularly good for the admin as it abstracts much of the .NET code into the cmdlets. If you use a cmdlet you don’t need to know, or even care, what .NET class is being used in the back ground.
  4. How much of a developer do you have to be to string cmdlets on the pipeline and come up with a powerful piece of functionality that solves your business problems now

In 2006/2007 when PowerShell was just getting started I might of agreed that starting with PowerShell could be viewed as a steep learning curve. Four years later I think it is a lot easier – again Windows IT Pro have published a number of articles on PowerShell – with much more information available.

I would turn this on its head and state that if you are a Windows administrator that isn’t using PowerShell you are making your life more difficult that it needs to be.

under: PowerShellV2, Rant


  1. By: Robert on August 10, 2010 at 3:19 pm      

    My two bits would be:
    1. Anything that “requires” PowerShell to do should really be given priority to the UI guys to incorporate into whatever product the Powershell command is needed in.
    2. All UI actions should “offer” the Admin the Powershell equivalent of the command (such as Exchange often does) so this can be give the Admin a legup on re-using.

  2. By: Mike Shepard on August 10, 2010 at 3:28 pm      

    I agree. There is undoubtedly a learning curve, but there’s a lot of really good tutorials (including several free ones) that will have most sysadmins using it quickly. It might take longer for sysadmins who are not comfortable with scripting, but that’s going to be true with any “scripting” solution. The point about the availability of an embeddable version is completely missing the point. Almost everyone will ignore this as not something they need, but those of us who want something like this are very grateful.

  3. By: Keith on August 11, 2010 at 9:08 am      

    I don’t know Richard, I enjoy playing with Powershell and there’s a lot of wow factor in what it can do but on a day to day basis, I have a hard time keeping my skills up. Powershell was very helpful when we did a file server migration for example where I was parsing paths and using a decision tree to copy hundreds of files. But if I have a user that can’t print because of a driver issue on the print server (a LOT more common issue), how would PS help me there? It seems like daily admin tasks deal in aberrations and one-off situations where coding a powershell solution is just not a good use of time.

  4. By: Rich Kusak on August 11, 2010 at 12:15 pm      

    I agree with Richard. I read Paul Thurrott almost daily and find the he is usually on target but this time I have to disagree. I’m an admin with barely any developing experience. In 2008 I picked up PowerShell and yes, there was a learning curve but once I understood how cmdlet’s generally worked I was able to apply that knowledge exponentially. PowerShell quickly became my favorite tool and today I’ve been able to solve more problems in less time than I could have ever dreamed.

  5. By: kryten on August 15, 2010 at 2:52 pm      

    I’ve been into Powershell since 2006 now and would not do anything differently. I don’t consider myself anywhere near “expert” in Powershell, but I have been able to come up with (I think) some amazing functionality that has saved the company I work for a shedload of money. My thanks? Unwavering and unrelenting criticism at every level for developing solutions in a language “no one knows” and if I get “hit by a bus”, “no one will ever be able to figure out how it works!”. I have fell out with managers time and again over my choice to use Powershell and met with nothing but resistance whenever I’ve wanted to deploy it..”what it if it crashes the server?”.

    My judgement in this matter has repeatedly been called into question and it has been brought up in my annual performance review. The fact that I have probably saved hundreds of hours of overtime is simply overlooked, because, due to the Power or Powershell the company never suffered the pain of the outlay prior to the solution being available!

    I offered to train four other guys in Powershell and subsequently gave them a start in the language that I would have killed for. Now, months later, none of them will go near it: “Too complicated for me, sorry”.

    I love Powershell, truly and deeply, but I feel aggrieved that MS has not done more to “push” Powershell into IT managerial focus and thereby back up my claims that it’s “the way forward”.

    The book on my desk right now is “learning perl”. Not because I believe in perl more than Powershell, but because there is an intranet course available to my company in perl, so they believe that they can train someone in that, if I were to leave. They have “no plans” for Powershell training .. of any kind. The IT company who provides our training hadn’t HEARD of Powershell when I enquired about it!

    It’s a tragic, deplorable yet very real situation.


  6. By: SteveE on February 4, 2014 at 8:27 pm      

    Thanks for an interesting thread.

    This is a very sore topic with me.

    I am a 60+ hour a week C# developer with 25+ years of Intel, DOS and Windows experience.  I mainly build server software.   I learned MSDOS batch file solution from Dan Wolverton’s, Supercharging DOS.  With one or two com/exe utilities I could do amazing things with a batch file (given that time).  DOS/CMD batch files are much more powerful than most people realize.  So I am not afraid of batch or scripting tools.  But of course in this modern age of .NET, batch files don’t cut it.

    I am dying to use PowerShell.  Tapping into the .NET framework from a script is something that I have wanted to do, for many years.  I have tried to “Get Started” with PowerShell many times in the last 4 years.   My view, is that MS is getting way too much like the Linux culture – vague, non-specific, inaccurate, error-prone and generally missing the point, causing nothing but frustration with users, who don’t live in their mom’s basements.

    There is no 2-line sample (HellowWorldAndGoodbye) anywhere on the Internet that will simply work for the average user wanting to learn PowerShell.  Sure, most of you are up in arms over that comment, but it is true.  Here’s why.  Details, details, details.  It is always the details.

    PowerShell is brilliant, but few will ever get to experience it, by getting their 2-line script to work.  The first thing that one encounters is that you can’t just run the 2-line script.  One must deal with all the security, signing and trust issues (exceptions).  This sidetrack will not only annoy you, taking any joy out of learning the new tool, it will take you hours to get over the hurdle, as the topic is not covered much in any form that doesn’t make you want to pull your hair out.  Some kind soul somewhere may have a page that understands this, and he or she offers some wonderful solutions, and I have just not found it.  I think it would be awesome if MS would maybe try this.

    Why must one read a 20-page document on script signing to get my 2-line script to run?  Sure, you can temporarily bypass some of this, if you know the right people, or get very lucky searching online, and so maybe you can eventually get your 2-line script.  But finding that nugget of info isn’t easy.  You will most likely just give up.  

    But if you are in that very small crowd and you get that 2-line script to work, you will feel accomplished, and you should.  Now you may consider deploying it to a couple machines (or more).  And now is when you will start pulling out the remaining hair left on your head.  Sign this, type this, type that, read this, and, get your work done as well.

    What makes PowerShell even more maddening, the help you can so easily type to get info on this and that (Get-Help), doesn’t work on most systems.  Just type this or that to get “help” on signing your script.  At this point 90% of people have already run away at this point.  How is this good?  Don’t trust my opinion here, just try this with others, and you too will see.  Sit back and observe.

    No sane person, who has to solve problems, in a reasonable amount of time, is going to spend 5-10 hours getting around these initial PowerShell barriers.  They are going to march on and solve their problems with others tools, like writing a C# app and (crazy idea) running it.

    How come nobody at MS sees this?  Is the goal to be as convoluted, vague and inaccurate as typical Linux culture?  If so, the MS is off to a great start with PowerShell.  Take the worst part of the Linux culture, and embrace it!

    I will continue to write my utilities and 2-line solutions to problems, in an environment that simply works = simple C#.  While my really smart 200-IQ developer friends will work away on their PowerShell scripts, and crossing the line into SystemAdmin to get them deployed ( am impressed), I will have moved on to my next project.  I didn’t use the coolest new stuff from MS, but, I spent my time creating my solid, reusable and very-readable OOP solution, and I didn’t have to become a SystemAdmin in the process.

    When it can be easily demonstrated, time and time again, that you can take a stranger off the street or a $150K system admin, and get them solving their problem in heavy Visual Studio and C# much faster than you can with PowerShell, then MS will continue to have little to no penetration into the toolbox with PowerShell.  

    I want PowerShell to make it, really I do, I think PowerShell WILL fail.  And it will fail for the reasons that I have listed above.

    I don’t know why MS can’t stand back and look at this problem and address it rather than whistling past the graveyard.  There is no need to spend millions with MBA studies, just make observations of 10 various users, and think about what I said above.

    Good luck