Top Three Reasons to Learn PowerShell and How to Start

top three reasons to learn powershell

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.

powershell automation script
Automation via PowerShell will save you time every time you perform a repeated task

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.

  1. Formal Learning Program
  2. 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

Microsoft Learn is a Free Resources for learning all things Microsoft - Like PowerShell
Microsoft Learn is a Free Resources for learning all things Microsoft – Like PowerShell

There are many different ways to find something formal and structured.

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.

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!

Smitty

Curtis Smith works in IT with a primary focus on Mobile Device Management, M365 Apps, and Azure AD. He has certifications from CompTIA and Microsoft, and writes as a hobby.

View all posts by Smitty →