Getting Admin’s to adopt PowerShell

The RTM of PowerShell was released over 2 years ago. But still there are multiple occasions in which I find myself trying to convince someone that they should really start looking into using this incredible new tool but they end up fighting me pretty hard. There have been a couple consistent themes that I have detected in these conversations that I think are very valid points.

First, I would like to point out that my role at work is a System Engineer. I am not the Operations guy down in the trenches with Ninjas on fire chasing me everywhere I go. My role on the Infrastructure team is to figure out how to incorporate new technology into our existing infrastructure without breaking stuff. I also help troubleshoot issues that get escalated to our team. So suffice to say, I am not an Admin. But, here is some feedback I have gotten from our Ops team members.

The first is that Admins are never going to use something unless they need to. Necessity is the mother of invention, or innovation for that matter. Why would anyone switch from something that works to something that may work but they don’t know how to  use yet? I think the PowerShell team is working very hard to address this very issue, although I think sometimes we miss it in the background when we are introducing people to PowerShell. One of the beauties of PowerShell is that it is a solid consistent language that can be used across multiple technologies. Regardless of whether you are administering an Exchange server or Virtual Machine manager, you are going to likely be doing a “get-doohickey | set-Doohickey.” Also there is tremendous power in the consistency of naming parameters and arguments. All Cmdlets are verb-noun -parameter argument.

I think what the Admin is thinking is that PowerShell is just one more thing to learn. We are having a hard time telling them that the investment they make in learning PowerShell to manage Exchange will also help them with VMM, desktop management, AD,Group Policy, and Terminal Services, just to name a few.

The second issue is really a two-edged a sword. There is an awesome community supporting PowerShell and a ton of great content on the web that has been worked on over the years and is really quite mature. The problem here is that newcomers to PowerShell start seeing some of this stuff and get completely overwhelmed right away. If a complete beginner asks “How can I filter the services to see just the ones that are stopped?” and they find something like gsv | ? {$_.status -eq “Stopped”}” they will completely freak out. On the other hand, they may use it but not understand what is going on and just save it as another tool in their tool bag, without understanding that they can filter just as easily on processes or on Virtual Machines.


There is one thing that I believe has not been sold quite as much as necessary is Tab-Completion. Take the example below copied from a blog entry from the MS Exchange Team

This is the Exchange Management Shell (EMS) command Tom would enter to generate the cert request to be provided to the 3rd party CA in order to generate the actual certificate:

New-Exchangecertificate -domainname,, contoso.local,, server01.contoso.local, server01 -Friendlyname contosoinc -generaterequest:$true -keysize 1024 -path c:\certrequest.req -privatekeyexportable:$true –subjectname “c=US o=contoso inc,”

We have found that the ‘–subjectname’ option is the most confusing. The help contents in EMS are vague as well. The best description is found in the TLS whitepaper mentioned at the beginning of this post so we’re not going to reproduce it here.


As an admin I would look at this and say something like, “Crap, who created this huge long command line entry. Editing this is going to suck.” What people don’t get is that they have Tab Completion available, not just for the Cmdlets but for parameters as well. This just doesn’t get conveyed when we are posting examples. Now if you throw in PowerTab or Intellisense from PowerShell Plus, its just gravy.

And so, I would like to pose the question to you, how do you as an engineer or an admin get your teammates to start using PowerShell. What walls have you come up against and what can we as a community to do to help break down these walls.

One thing I have been doing lately is using PowerShell in the build guides and Ops guide that I write, to at least get people started with using it. What else can we do?


2 Responses to “Getting Admin’s to adopt PowerShell”

  1. Jon P Says:

    I’m speaking from a desktop-admin and tech support perspective. One thing I’ve run into is that no one wants to do anything with PowerShell in my office because it’s technically Not Approved By Management. If there’s no policy that says “you can do this”, everyone assumes there’s 1000 laws against it, and no one wants to even think about bringing it up for management’s consideration as an approved tool because of the red tape involved. The only shortcut is this: If they see you using a tool that makes your job easier and it does something that they can recognize would make _everyone’s_ job easier, they’ll jump on it instantly. I’d love to be able to make management aware of the usefulness of PowerShell at that level, but I’m not sure what I can show them with it that would accomplish that…Aside from its awesome WMI capabilities, of course. Once PoSh2 becomes available for download as a separate RTM, I’ve got a bunch of WMI-related scripts and modules that’ll knock their socks off.

  2. snorkel Says:

    One thing that I’ve seen many an admin throw up their arms in disgust over is the continued suckiness of copying and pasting into a command window. This is especially true with a Linux / Unix admin that is used to tools like Putty where selecting text puts it in the clipboard and right clicking pastes. Take someone who does that and walk them through going to edit, mark, select, edit, copy – edit, paste and they immediately wonder what decade this tool is from.

    Additionally, I think Microsoft would do themselves some favors in pushing Powershell adoption if they’d make it the standard command prompt interface in Windows 8, which so far it looks like they aren’t doing. It is time to make Powershell the goto command prompt and make people dig to find good ol’ cmd.exe

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: