Recently, one of the guys on my team wanted to talk about wanting to learn PowerShell. Boy, did I get WAY too excited about it. Despite my excitement, he was still interested and we started talking about PowerShell. He wanted to know how he could learn and why should he bother. He said it seems like many of the things he does every day has an interface to interact with. I said that is 100% accurate, and more and more this is becoming true.
The world is becoming easier to manage as it becomes more about knowing what a check box does, than about how to configure a setting in a system. Software defined networking is the perfect example of this. What used to take multiple certifications and loads of experience can now be learned in a much shorter period of time. This is because you just need to know what that policy needs to be, not how to configure the device.
So that brings me to the original question: Why should someone learn PowerShell?
Microsoft is certainly among the tech giants leading the way of simplifying configuration and designing an interface for things that used to require all command line. We will talk about why in this article. The truth is that despite the advancements in user experience, scripting and light-weight programming is in high-demand. More and more IT jobs are requiring at least some knowledge in a scripting or programming language because it is such a valuable skill.
The truth is, these days, if you want to advance your career in IT, one of the strongest skills you can possess, will be PowerShell (or another shell equivalent). Lets talk about it.
Disclosure
I am FAR from being a pro with PowerShell. I constantly have to look up commands, syntax and properties. BUT, the more I use it, the more familiar it becomes. I constantly find myself seeking out reasons to do things in PowerShell instead of the GUI because I know that is the best way to learn. So please, take this and any other PowerShell articles with an understanding that I may not have the best answer. I’m a life long learner and am open to suggestions always.
Authors Note
Also while this article will focus on PowerShell, I fully recognize that most of the world runs on Linux servers, and that much of cybersecurity requires the knowledge of Python, Bash, and more. Please, if you are not in a Windows world, or are just curious about other shell languages, please read this article generically as I feel the concepts are the same. I don’t think PowerShell is the “end-all-be-all”, but I do believe everyone should know SOME form of shell language. I’m just a PowerShell guy 🙂
My Top 3 Reasons for Learning PowerShell
Job Knowledge – Growth Beyond the GUI
The first big advantage to learning PowerShell or an (equivalent shell language) comes in the form of job knowledge. The first thing I began to understand with PowerShell is that it was like taking a look under the hood. You find very quickly why menus have certain options or why your input matters. Its because the GUI is taking your responses, and passing it along as a variable in a configuration that is all shell in the background anyways.

When you take the time to learn the language, you begin to see how things work. You see how things interact, and how they were designed, and you begin to get a bigger picture. I know for me, I am able to decern why something behaves a certain way when I have seen the PowerShell to configure it. It can make troubleshooting easier (though not always) and can allow you to test whether or not a policy or configuration works the way you expect.
In the Army, they talk about the idea of knowledge breadth vs depth. Officers tend to have knowledge that is six miles wide, but only six inches deep. Sergeants tend to have knowledge that is six inches wide but six miles deep. The then work together to cover the gaps. This is because you want the ones doing the job to be the subject matter experts. If you want to be the subject matter expert in something in IT, you are better off digging the hole to find the secrets hidden deep below the surface. PowerShell and scripting is the shovel that gets you there.
Automation – Speed, Consistency and Reliability
If you have ever had to repeat the same step-by-step process multiple times, you have to appreciate the value in automation. PowerShell scripting can allow you to complete repetitive tasks way faster with less effort than a manual process. I covered the process of adding multiple users to an Azure AD group via PowerShell previously on this blog. This is something that I have been asked to do on several occasions, and scripts like this save me considerable amounts of time.

You may also look to automate processes with scripting to increase consistency. Using a script to perform a repeatable task ensures that the task is performed the same way each time. One of the most common examples of this that I hear is in regards to onboarding and offboarding employees. Scripting an onboarding process ensures the experience is consistent for all new employees. Scripting the offboarding process ensures that you are processing former employee accounts correctly. There is less of a security risk and a much smaller chance that something is missed in this process.
Finally, it is my experience that PowerShell is more reliable than working in the GUI for most scenarios. Recently, I was working in Exchange Online, just trying to view settings in a few accounts. The GUI was taking so long to load, that I had time to look up the correct commands, and pull the same information in PowerShell for all the users before I made it through even 2 in the GUI. While this isn’t always true, I’ve had many instances where the portal for a given tool is unavailable or unresponsive, but the shell is working.
Career Opportunities and Job Security
The IT field is obviously technical by nature. A huge part of being successful in the IT field is an enjoyment of problem solving and learning. Learning PowerShell indicates a strong desire for learning and growing to your current and potential future employers. Demonstrating the knowledge to script processes or tasks indicates a higher job knowledge to most employers. Scripting isn’t an easy thing to learn, so that knowledge also indicates a dedication to learning. Plus any one looking to make processes more efficient will keep most company managers happy in any position.
I was reading on Reddit recently (but also several times in the past) where hiring managers indicated that in the Cybersecurity field, it was rare to get anything above an entry level position without some level of programming ability. This included scripting languages like PowerShell or Python. The bar is constantly being raised in the IT field, because the game is constantly changing. And things aren’t slowing down anytime soon. Depending on your area of IT, you may be able to get by just fine without any scripting or shell coding. I know for me though, it wasn’t a risk I was willing to take. Even a base knowledge is better than nothing.
How to Get Started
So if you are still reading that means you are at least curious right? Possibly even convinced? Great! The hardest part about learning something new is to figure out why you should do it. Now that we are past that, lets talk about how to get started. There are two main avenues that I believe most people use to get started.
- Formal Learning Program
- Jump Right in and Figure it out
Either approach is fine, and I believe it will be based more on your personality. I personally recommend an approach that includes both options. When I started, I began with a formal program, and then leveraged things I wanted to do int he real world to apply those teachings in greater depth.
Formal Learning Program

There are many different ways to find something formal and structured.
- Automate administrative tasks by using PowerShell – Learn | Microsoft Docs
- This is Microsoft’s free learning track to get started with PowerShell in an administrative context. This is an excellent way to get started for free and get relevant knowledge right away
- PowerShell in a Month of Lunches – By: Donald W Jones
- This is a very popular series for learning practical knowledge with PowerShell and other scripting languages. I personally have not used these books, but they are the one I hear recommended the most.
- Introduction to Windows PowerShell 5.1 | Udemy
- This Udemy class covers the fundamentals and includes great exercises to help drive home the concepts. This is the class I got started with, and then used to supplement as I began to implement the things I learned in my every day work.
This is far from all-inclusive. Spend some time researching and reading reviews on what available out there. Find something that matches your preferred learning style, and work through the structured environment.
Jump Right in and Figure it Out
So before I go too far, I have to say I believe 100%, that you should NOT be learning in your production environment. Make sure you are testing PowerShell in a controlled environment while you are learning, and be wary of any scripts you download online that you cannot view the code publicly.
With that said, as you are performing your duties, look up the cmdlets you would need to perform the tasks you are doing. Try to figure out how you would do it with PowerShell if you were going to do it that way. Having specific real world examples can help the message stick.
If you are the type to just jump into learning, then try focusing on finding the specific instances where PowerShell may be helpful. This can help guide you in a practical approach. If you are starting completely from scratch, you may want to find some videos or resources to understand the basic syntax of PowerShell. However, outside of that, practical application will give the most meaningful learning, so starting there is fine as well.
PowerShell SME’s and Twitter accounts to Follow
These are some of my favorite blogs and Twitter accounts to follow for learning PowerShell and more. Follow these folks to get some great knowledge on PowerShell and how to make it really work for you.
- Managed Modern Endpoint Blog – Sean Bulger (@managed_blog) / Twitter
- Powers Hell (powers-hell.com) – Ben Reader | 🔌😈 (@powers_hell) / Twitter
- Adam the Automator (adamtheautomator.com) – Adam Bertram (@adbertram) / Twitter
- Scott Hanselman – Coder, Blogger, Teacher, Speaker, Author – Scott Hanselman 🇺🇦 (@shanselman) / Twitter
Conclusion
Ultimately, the choice is yours. I believe there is a TON of value to learning PowerShell or another shell language. There are so many things you can do that are faster, more reliable and will give you a stronger understanding of how these systems work. The last reason I believe you should learn PowerShell is for your own confidence. There is something very “hacker-esque” for us non-hackers that feels very satisfying when you perform something through a shell instead of a GUI. It FEELS like you are a real system administrator, and it will provide you with a world of confidence as you get better at it. Plus if you are ever working with an end-user and use the shell, they will think you are a wizard with all those “DOS Commands” and “Coding stuff” you did to help them. Confidence goes a long way to reinforcing good habits, and it comes with practice. So get out there and start learning PowerShell already!
Hit me up on Twitter @SeeSmittyIT to let me know what you thought of this post. Thanks for reading!
