nearly 2 years passed when I wrote my first "How to become a PowerShell Pro" article and today I am restoring it and presenting you the updated version!
First - Why PowerShell?
PowerShell is the main language to adopt any Service (Cloud / On Premises) on any device (Windows / Linux / Server / Cloud).
Raising the adoption of PowerShell will be an enabler for everyone getting their first steps into Automation, new Services and central management.
It is a prerequisite for cloud deployment, manageability and DevOps in general. (e.g. MCP certificates contain huge PowerShell parts – especially the Azure certificates.)
Also coming with Windows as a Service and the Digital Transformation everyone has to change their existing processes and tools into the modern direction and increasing the level of automation where PowerShell helps a lot.
I worked out a learning plan to give you simple advice how to jump into this great scripting language! I will list up the best material you should work on at a specific learning point. (as for my own personal experience)
But keep in mind - this could vary for you. Persons are different as also their learning types. Some persons need to hear and see the things to capture the input better. Others learn best by reading and some need to interact as by writing.
But one thing is for sure - you will need a lot of practice and you will need to write scripts by yourself!
A good thing is to store your knowledge for future use by creating your own "knowledge base". Here you store all nice solutions or code snippets, which you may need in the future. By writing them down and testing them you strengthen also your knowledge. Don´t forget to manage it nicely to find everything later on.
You will also need a "Script-Store" where you can store your complete scripts in the future. If you haven´t done that yet - the time to do this is now.
Also a very important point:
Get to know what Powershell best practices are and respect them. When your scripts become larger or if you use scripts in an productive or business environment you don´t want to learn by yourself why best practices had been made to "Best Practices".
I see many admins out there copy/pasting scripts from the internet and using it in their production environment. From the experience I see in the field - most of the admins can be divided into three sections:
- The ones who don´t like to code and only very hardly understand what some specific code is doing.
- The ones who don´t like to code but can read code and understand what it is doing technically.
- The ones who like to code and can read and write code with the understanding what it is doing technically.
Please don´t use code which you did not write and/or do not understand.
Sometimes some specific code is working under specific circumstances but it may break your complete environment if something changes.
First you need to get in touch with the Powershell basics and this may be the scripting basics if you don´t have a developing background. Herefore i can only recommend the godfather of powershell himself -
He has made some very nice online trainings which can be found on the Microsoft Virtual Academy.
When you watch the videos, try to test the methods by your own. Pause the videos, if you want to test something out:
Getting Started with PowerShell 3.0 Jump Start
Advanced Tools & Scripting with PowerShell 3.0 Jump Start
After having watched the videos, you should try to work out some scripts by yourself. You need to know the basic Cmdlets and how to work with them. Use Get-Help as much as you can.
A good book to start with is this one:
This skill level assures, that you can write some easy script lines and small scripts by yourself, but you have to google/bing a lot to achieve your aims. This skill level is the hardest to proceed. Here you have to strengthen all your skills: You need to get to know the most used commandlets and how they work - and this in combination with some powershell techniques. You have to fill all your gaps in the powershell scripting basics and many more. But you should not extend your knowledge massively. Keep your eye on the basics - these must be known perfectly to have a good fundamental. Do not dive into some very rare powershell deep dives - better you concentrate on daily work tasks.
Very good resources for this step are the cookbooks of Dr. Tobias Weltner which can be found here:
Afterwards you could go deeper with the next book, which is also written by Don Jones and Jeffery D. Hicks. Personally i think that this book can also be skipped. But if you read a lot and don´t worry about the money take it in your journey:
Learn PowerShell Toolmaking in a Month of Lunches
Don Jones and Jeffery D. Hicks, 368 pages
At this point you should also join a forum where you can read the questions and should try to understand the solutions and the solution scripts. For this I can recommend the Windows Technet in English
Windows Technet Forums - Powershell - English
and the PowerShell.org Forums:
Get also in touch with WMI. Be sure that you could answer the simple answers like - what is it and how can it be browsed and used.
This skill level assures that you are stable with the most important commandlets and you have just written some scripts, but need the knowledge of rarely used techniques or deep diving procedures.
Go to a Forum and try to answer the posts. Look at the solutions and compare your solutions with other ones.
A perfect book at this time is the following:
Don Jones, Jeffery Hicks, Richard Siddaway, 744 pages
I personally loved this one - it is very comprehensive (though missing a lot of the basic stuff) and delivers very nice examples which could be used in your daily work. Also it shows some nice techniques in Powershell, which you won´t find in other books and is therefore worth reading, even if you think, that you have mastered Powershell.
At this point you should also take a big deep dive into Regex and how to use it with Powershell. If you are good in Regex you can easily parse everything. I would suggest to buy a dedicated book for this task.
An additional topic at this point is to learn how to write good and reusable code.
Following keywords should get into your repertoire: Function, Module, Signing, Pester, Help-documentation, Release-Pipeline and much more.
Take also some visits to usergroups or conferences. Learn from the best.
And at last - keep an eye on active powershell blogs or even better - blog by yourself.
So - here are we now - the Pro level. Do you think you cannot improve your skills anymore? Then you are absolutely wrong - that´s for sure.
One very important point is to know, how Powershell works under the hood and fully understand “why” and more “how” PowerShell is working. So you need to know the basic and also deeper knowledge of .Net.
I absolutely recommend to learn C# and later on XAML/WPF.
A good book ( if you haven´t read it till here) is the following:
At this point you should start your own projects. Grab a nice topic which is rarely described or very new and dive into it - or create some nice tools which can be used by many preople. And - share them!
Pros learn best - from other pros. Spread your network - speak at conferences / usergroups / everything you like.
And - if you have the time and motivation you should also read more books. By this you harden your basic skills and may be you find some new tricks or nice techniques to extend your own knowledge.
And the most important suggestion - never stop learning.
Keep an eye on the street - we are driving in a fast car and the street changes every day.
Thriving PowerShell in the field
Everyone can make the change!
Learn how PowerShell works and share your experience and knowledge. Try to deliver presentations at our UserGroups / PowerShell Saturdays / PSDays / PowerShell Conferences!
No one will kill you, if you don´t know everything - it is about sharing your knowledge on potential new or raising topics. Meet the professionals - ask questions and collaborate! PowerShell is still not commonly spread - there are many admins out there who use it very rarely and many of them because they have to.
Show them what the power of automation can look like and that it is not hard to get there!
The best way to stay up to date is visiting conferences and taking a look at current blog articles. Twitter is a good way to follow members of the PowerShell Team or some of the speakers from conferences which share their knowledge and new findings very regularly!
Coming with PowerShell there are topics you may take a dedicated look at. One of the first huge topics is "PowerShell Security".
I have written an extensive blog article, which you should go through:
Further on you may also take a look at the following topics in depth:
- DevOps - Release Pipeline
- JEA (Just Enough Administration)
- Using PowerShell for dedicated technologies
- Active Directory
- Sharepoint / Exchange
- Azure / Azure Stack / other Cloud-products/services
- Hyper-V / VMWare products
- Client / WMI / Win API calls
- Linux / Bash
- Blue- and Red-Teaming / Malware Frameworks, Forensic Frameworks, Pentesting Frameworks
- System Center products
- Operations Management Suite
- IoT / Win 10 IoT Core
- and many more
Regarding all this topics you need to know some architectural information and also how the cmdlets are named and can be used efficiently.
You think you have mastered PowerShell? That´s great! But PowerShell is only one of the first steps. Depending on what topics you want to focus on - you should never stop learning.
These are some of the possible good follow-ups:
- C / C++ (Security)
- Python, R and many more (AI)
- C# (how does PowerShell work under the hood? - professional software development)
- Cloud Services
Take a look at this materials - many of the links are just a 'must-see'.
Communities & Blogs:
Collaborate, ask questions and share your knowledge!
I hope you enjoyed my recommendations. If you have any other material or you absolutely disagree with me in some point please let me know.
David das Neves
Premier Field Engineer, EMEA, Germany
Windows Client, PowerShell, Security