This repo contains my own self-made introduction to PowerShell course.
A lot of the training out there that I came across when I was starting out was very specific. It focused on how to setup DFSR with PowerShell, Exchange cmdlets or Server Core setups for example. This is great from an administrator point of view, but what about development? What if you're a skilled infrastructure Engineer wanting to automate some of your tasks, how do you go about that?
At various jobs I've been "the guy" for PowerShell. Well why can't everyone be "the guy"? If I learnt anything during my brief stint as a technical trainer (no it's not "open palms, open body language") is that anyone can learn anything given enough time and guidance. If I could learn C# and Python well enough to create programs that save 1000s of manhours a month, but still wander into a room occassionally and go "why am i here again?", then why can't an Ops Engineer learn PowerShell well enough to automate all the things?
I've since taught this course, in both its old and new form, to roughly 200 individuals across 3 years. Not everyone gets everything straight away, and that's fine! But just understanding some basic programming concepts and how they apply in PowerShell, like how to iterate through an array or what an object is, will add some real power to your skillset as an Engineer.
I hope this course brings some benefit to someone somewhere. I'm not on there much but feel free to reach out to me on reddit (https://www.reddit.com/user/Dogezon/) or LinkedIn (https://www.linkedin.com/in/benni) if you have questions outside the scope of pull requests/changes.
The content in this repo is intended to be used by a Technical Trainer, with sufficent knowledge of PowerShell, to train a class of up to 8 individuals.
The course, in its entirity, is broken down into 3 x 2.5 hour workshops. Each workshop generally follows the rule of introducing a concept and then using activities or examples to reinforce said concept.
Optionally, you can lead a 4th workshop to try and round all the content together. However, I've found that the content of this would vary from group to group, and it'd generally fall to the Technical Trainer to decide which areas the group need reinforcement. I've provided a task sheet that I've used in previous iteratons of the course for guidance.
Read the storyboard for each workshop for more information. See below for the learning objectives for each workshop. It is heavily recommended to run through the workshops, 1 to 3, in order. Ideally a week between workshops tends to be a good guideline, but then balancing that with scheduling can be a nightmare.
1 - Background and Primitive Datatypes
- Navigate the Console and Intergrated Scripting Environment with confidence
- Utilise common PowerShell commands, and community resources, to self-help when unsure of a cmdlet’s purpose of how to perform a task
- Demonstrate basic knowledge of PowerShell as a language, including its syntax and background
- Demonstrate application of knowledge about PowerShell primitive datatypes
2 - Variables and Comparison Operators
- Navigate the Console and Intergrated Scripting Environment with confidence
- Demonstrate application of knowledge about variables and comparison operators
3 - Control Structures, Functions and Standards
- Navigate the Console and Intergrated Scripting Environment with confidence
- Demonstrate application of knowledge about control structures and functions
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.