Sergey Nivens - Fotolia
To examine the history of PowerShell requires going back to a time before automation, when point-and-click administration ruled.
In the early days of IT, GUI-based systems management was de rigueur in a Windows environment. You added a new user by opening Active Directory, clicking through multiple screens to fill in the name, group membership, logon script and several other properties. If you had dozens or hundreds of new users to set up, it could take quite some time to complete this task.
To increase IT efficiency, Microsoft produced a few command-line tools that helped but did not go far enough for administrators who needed a comprehensive way to automate how they worked with the Windows OS and Microsoft's ever-growing application portfolio.
It wasn't until PowerShell came out in 2006 that Microsoft gave administrators something that approximated shell scripting in Unix. PowerShell is both a shell -- used for simple tasks such as gathering the system properties on a machine -- and a scripting language to execute more advanced infrastructure jobs. Each successive PowerShell release came with more cmdlets, updated functionality and refinements to further expand the administrator's dominion over Windows systems and its users. In some instances, the only way to make certain adjustments in some products is via PowerShell.
Today, administrators widely use PowerShell to manage resources both in the data center and in the cloud. It's difficult to comprehend now, but shepherding a command-line tool through the development gauntlet at a company that had built its brand on the Windows name was a difficult proposition.
Don Jones currently works as vice president of content partnerships and strategic initiatives for Pluralsight, a technology skills platform vendor, but he's been fully steeped in PowerShell from the start. He co-founded PowerShell.org and has presented PowerShell-related sessions at numerous tech conferences.
Jones is also an established author and his latest book, Shell of an Idea, gives a behind-the-scenes history of PowerShell that recounts the challenges faced by Jeffrey Snover and his team.
In this Q&A, Jones talks about his experiences with PowerShell and why he felt compelled to cover its origin story.
Editor's note: This interview has been edited for length and clarity.
What was it like for administrators before PowerShell came along?
Don Jones: You clicked a lot of buttons and wizards. And it could get really painful. Patching machines was a pain. Reconfiguring them was a pain. And it wasn't even so much the server maintenance -- it was those day-to-day tasks.
I worked at Bell Atlantic Network Integration for a while. We had, maybe, a dozen Windows machines and we had one person who basically did nothing but do new user onboarding: creating the domain account and setting up the mailbox. There was just no better way to do it, and it was horrific.
I started digging into VBScript around the mid-1990s and tried to automate some of those things. We had a NetWare server, and you periodically had to log on, look for idle connections and disconnect them to free up a connection for another user if we reached our license limit. I wrote a script to do something a human being was sitting and doing manually all day long.
This idea of automating -- that was just so powerful, so tremendous and so life-affirming that it became a huge part of what I wound up doing for my job there and jobs afterward.
Do you remember your introduction to PowerShell?
Jones: It was at a time when Microsoft was being a little bit more free talking about products that they were working on it. There was a decent amount of buzz about this Monad shell, which was its code name. I felt this is clearly going to be the next thing and was probably going to replace VBScript from what they were saying.
I was working with a company called Sapien Technologies at the time. They produce what is probably still the most popular VBScript code editor. I said, 'We're clearly going to have to do something for PowerShell,' and they said, 'Absolutely.' And PrimalScript was, I think, the first non-Microsoft tool that really embraced PowerShell and became part of that ecosystem.
That attracted the attention of Jeffrey Snover at Microsoft. He said, 'We're going to launch PowerShell at TechEd Europe 2006 in Barcelona, [Spain], and I'd love for you to come up and do a little demo of PrimalScript. We want to show people that this is ready for prime time. There's a partner ecosystem. It's the real deal, and it's safe to jump on board.'
That's where I met him. That was the first time I got to present at a TechEd and that set up the next large chapter of my career.
Don JonesVice president of content partnerships and strategic initiatives, Pluralsight
What motivated you to write this book?
Jones: I think I wanted to write it six or seven years ago. I remember being either at a TechEd or [Microsoft] Ignite at a bar with [Snover], Bruce Payette and, I think, Ken Hansen. You're at a bar with the bar-top nondisclosure agreement. And they're telling these great stories. I'm like, 'We need to capture that.' And they say, 'Yeah, not right now.'
I'm not sure what really spurred me. Partly, because my career has moved to a different place. I'm not in PowerShell anymore. I felt being able to write this history would be, if not a swan song, then a nice bookend to the PowerShell part of my career. I reached out to a couple of the guys again, and they said, 'You know what? This is the right time.' We started talking and doing interviews.
As I was going through that, I realized the reason it's the right time is because so many of them are no longer at Microsoft. And, more importantly, I don't think any of the executives who had anything to do with PowerShell are still at Microsoft. They left around 2010 or 2011, so there's no repercussions anymore.
Regarding Jeffrey Snover, do you think if anybody else had been in charge of the PowerShell project that it would have become what it is today?
Jones: I don't think so. By no means do I want to discount all the effort everyone else put in, but I really do think it was due to [Snover's] absolute dogged determination, just pure stubbornness.
He said, 'Bill Gates got it fairly early.' And even Bill Gates getting it and understanding it and supporting it didn't help. That's not how it worked. [Snover] really had to lead them through some -- not just people who didn't get it or didn't care -- but people who were actively working against them. There was firm opposition from the highest levels of the company to make this stop.
Because you got in close to the ground floor with PowerShell, were you able to influence any of its functionality from the outside?
Jones: Oh, absolutely. But it wasn't really just me. It was all the PowerShell MVPs. The team had this deep recognition that we were their biggest fans -- and their biggest critics.
They went out of their way to do some really sneaky stuff to make sure they could get our feedback. Windows Vista moving into Windows 7, there was a lot of secrecy. Microsoft knew it had botched -- perceptually if nothing else -- the Vista release. They needed Windows 7 to be a win, and they were being really close to the vest about it. For them to show us anything that had anything to do with Windows 7 was verboten at the highest levels of the company. Instead they came up with this idea of the "Windows Vista update," which was nothing more than an excuse to show us PowerShell version 3 without Windows 7 being in the context.
They wanted to show us workflows. They put us in a room and they not only let us play with it and gave us some labs to run through, but they had cameras running the whole time. They said, 'Tell us what you think.'
I think nearly every single release of PowerShell from version 2 onward had a readme buried somewhere. They listed the bug numbers and the person who opened it. A ton of those were us: the MVPs and people in the community. We would tell the team, 'Look, this is what we feel. This is what's wrong and here's how you can fix it.' And they would give you fine-print credit. Even before it went open source, there was probably more community interaction with PowerShell than most Microsoft products.
I came from the perspective of teaching. By the time I was really in with PowerShell, I wasn't using it in a production environment. I was teaching it to people. My feedback tended to be along the lines of, 'Look, this is hard for people to grasp. It's hard to understand. Here's what you could do to improve that.' And a lot of that stuff got adopted.
Was there any desire -- or an offer -- to join Microsoft to work on PowerShell directly?
Jones: If I had ever asked, it probably could have happened. I had had previous dealings with Microsoft, as a contractor, that I really enjoyed.
I applied for a job there -- and I did not enjoy how that went down.
My feeling was that I was making a lot more money and having a lot more impact as an independent.
What is your take on PowerShell since it made the switch to an open source project?
Jones: It's been interesting. PowerShell 6, which was the first cross-platform open source was a big step backward in a lot of ways. Just getting it cross-platform was a huge step. You couldn't take the core of PowerShell, and, at that point, 11 years of add-on development and bring it all with you at once. I think a lot of people looked at it as an interesting artifact.
Don JonesVice president of content partnerships and strategic initiatives, Pluralsight
[In PowerShell 7], they've done so much work to make it more functional. There's so much parity now across macOS, Linux and Windows. I feel the team tripled down and really delivered and did exactly what they said they were going to do.
I think a lot more people take it seriously. PowerShell is now built into the Kali Linux distribution because it's such a good tool. I think a lot of really hardcore, yet open-minded, Linux and Unix admins look at PowerShell and -- once they take the time to understand it -- they realize this is what shells structurally should have been.
I think PowerShell has earned its place in a lot of people's toolboxes and putting it out there as open source was such a huge step.
Do you see PowerShell ever making any inroads with Linux admins?
Jones: I don't think they're the target audience. If you've got a tool that does the job, and you know how to use it, and you know how to get it done, that's fine.
We have a lot of home construction here in [Las] Vegas. I see guys putting walls up with a hammer and nails. Am I going to force you to use a nail gun? No. Are you going to be a lot faster? Yes, if you took a little time to learn how to use it. You never see younger guys with the hammer; it's always the older guys who've been doing this for a long, long time.
I feel that PowerShell has already been through this cycle once. We tried to convince everyone that you needed to use PowerShell instead of the GUI, and a lot of admins stuck with the GUI. That's a fairly career-limiting move right now, and they're all finding that out. They're never going to go any further. The people who picked it up, they're the ones who move ahead.
The very best IT people reach out for whatever tool you put in front of them. They rip it apart and they try to figure out how is this going make my job better, easier, faster, different, whatever. They use all of them.
You don't lose points for using PowerShell and Bash. It would be stupid for Linux administrators to fully commit to PowerShell and only PowerShell, because you're going to run across systems that have this other thing. You need to know them both.
Microsoft has released a lot of administrative tools -- you've got PowerShell, Office 365 CLI and Azure CLI to name a few. Someone new to IT might wonder where to concentrate their efforts when there are all these options.
Jones: You get a pretty solid command-line tool in the Azure CLI. You get something that's very purpose-specific. It's scoped in fairly tightly. It doesn't have an infinite number of options. It's a straightforward thing to write tutorials around. You've got an entire REST API that you can fire things off at. And if you're a programmer, that makes a lot more sense to you and you can write your own tools around that.
PowerShell sits kind of in the middle and can be a little bit of both. PowerShell is really good at bringing a bunch of things together. If you're using the Azure CLI, you're limited to Azure. You're not going to use the Azure CLI to do on-prem stuff. PowerShell can do both. Some people don't have on-prem, they don't need that. They just have some very simple basic Azure needs. And the CLI is simpler and easier to start with.
Where do you see PowerShell going in the next few years?
Jones: I think you're going to continue to see a lot of investment both by Microsoft and the open source community. I think the open source people have -- except for the super paranoid ones -- largely accepted that Microsoft's purchase of GitHub was not inimical. I think they have accepted that Microsoft is really serious about open source software. I think people are really focusing on making PowerShell a better tool for them, which is really what open source is all about.
I think you're going to continue to see it become more prevalent on more platforms. I think it will wind up being a high common denominator for hiring managers who understand the value it brings to a business and some of the outcomes it helps achieve. Even AWS has invested heavily in their management layer in PowerShell, because they get it -- also because a lot of the former PowerShell team members now work for AWS, including Ken Hansen and Bruce Payette, who invented the language.
I suspect that, in the very long run, it will probably shift away from Microsoft control and become something a little more akin to Mozilla, where there will be some community foundation that, quote unquote, owns PowerShell, where a lot of people contribute to it on an equal basis, as opposed to Microsoft, which is still holding the keys but is very engaged and accepting of community contributions.
I think PowerShell will probably outlive most of its predecessors over the very long haul.