Why Learn PowerShell?
According to the calendar, it’s now 2016. For those of you who didn’t know it, this is the 10th anniversary year for PowerShell. This time 10 years ago, I was working on one of the first books about PowerShell, learning and teaching myself along the way. We are now at version 5.0 and so much has changed since those humble days of PowerShell 1.0. But for many Windows-based IT pros, PowerShell continues to be either something they keep putting off or they don’t feel the need to truly invest the time, energy, and resources. Those IT pros who neglect to develop their PowerShell skills will languish in the long run.
I know that early on many people felt that PowerShell was simply going to be another management fad from Microsoft. It might fill a niche like managing Exchange, but in the long run, it wouldn’t really matter. That’s definitely not true. Microsoft has bet big time on PowerShell for a number of years and has made it very plain that if you intend to have a career managing Windows-based platforms and infrastructure you really need to know PowerShell.
As one example, although there’s no office Microsoft certification exam on PowerShell, a number of certification exams have PowerShell-related questions. The assumption from the certification people is that you will know how to use the relevant PowerShell commands to do your job.
For me, the most compelling argument that Microsoft is fully behind PowerShell is to look at the career path of Jeffrey Snover. For those of you who don’t know, Snover is essentially the inventor of Windows PowerShell. A little bit later Microsoft recognized him as a Distinguished Engineer. Today, he’s the Lead Architect for the Enterprise Cloud Group and the Microsoft Azure Stack and a Technical Fellow. He’s essentially responsible for everything that happens in the datacenter and cloud that’s related to your job. And all along the way, PowerShell has continued to play a growing role. Look at the upcoming Nano Server. Need to manage it? You’ll need to know PowerShell if you want to truly master it.
Say Goodbye to Traditional PC Lifecycle Management
Traditional IT tools, including Microsoft SCCM, Ghost Solution Suite, and KACE, often require considerable custom configurations by T3 technicians (an expensive and often elusive IT resource) to enable management of a hybrid onsite + remote workforce. In many cases, even with the best resources, organizations are finding that these on-premise tools simply cannot support remote endpoints consistently and reliably due to infrastructure limitations.
More and more management tools will be using PowerShell, and you won’t even realize it. I always mention the Exchange 2007 Server Manager console. Although this graphical tool met the majority of needs for an Exchange administrator, it was really just a GUI front-end to PowerShell. Once you finished clicking, PowerShell was really doing the work. Senior Exchange admins who need to do more than what the GUI was designed for, dropped to a PowerShell prompt and took full control of the process. The same is true today. Although there may be GUI-based management tools, you get full control from a PowerShell prompt.
Taking this a step further, PowerShell makes automation much, much easier. Creating a PowerShell script is pretty simple and developing functions and modules are not that much more difficult. The entire point of automation is to get most work done in the least amount of time and consistently. This is a paradigm shift for many IT pros and their companies. I refer to this as “managing at scale.” Instead of making a series of connections to 100 servers to check free disk space, you can manage all 100 servers at once with PowerShell. I can’t tell you the number of times I have had people tell me that they wish they had started learning and using PowerShell once they realize what it could do for them.
The last reason to learn PowerShell is that so much other technology is built around it. You can think of PowerShell as a glue. For example, Desired State Configuration is a separate technology for the DevOps culture, but it leverages what you know about PowerShell’s language and syntax. You can create server configurations in the PowerShell ISE which can be as simple or as complex as you need them to be using PowerShell’s scripting language. You can then deploy them to your servers and easily manage them all from a PowerShell prompt.
If you are an IT pro responsible for a Windows-based environment, and you are hoping for a long and rewarding career, I simply can’t imagine how that will happen without having to know PowerShell. Already I’m seeing job listings for professionals with solid PowerShell skills. You can’t get a decent job in IT without knowing something about TCPIP and the same applies to PowerShell.
Even better, Microsoft has begun embracing more and more industry standards like CIM and WSMan. From the PowerShell perspective, this means the ability to manage other elements in the enterprise beyond a server. For example, PowerShell 5.0 has a module with commands for managing network switches. I find this all very exciting thinking about managing everything from the comfort of my desk, or even the beach, all using PowerShell or PowerShell-related tools.
So if you have been avoiding learning PowerShell or procrastinating, I’d love to know why. I’ve said this many times, but you have to take control of your career and not merely wait for your current job to give you what you need. Sadly, I think there are still many companies, as well where management has failed to realize PowerShell’s value. It might be up to you to show them the way. I’m happy to help.
We have a lot of PowerShell-related content here with more added every week. I’m working on adding even more beginner-oriented content, so I hope you’ll keep tabs on the site. Finally, because the question comes up often, I maintain a page on my own blog about essential PowerShell resources. I hope you’re ready to get going. I know I am.