One thing I yearned for before learning PowerShell was a guide with bullet points of things I should be looking at to start my adventure and to work towards to becoming better.
Note: this is a living document and I will be updating as I learn more and make guides and resources for each step and for new advancements come.
- Gather an understanding of what is PowerShell (and all the different version) and what you want to achieve with it (basic)
- Gather some basic resources so you know where to look for when you are stuck (basic)
- Come up with your own rules (basic)
- Jump into PowerShell.exe. (Start with the golden commands Get-help, get-module, Get-command, Where-Object, Select-object ) try to create your first useful task (try to keep it simple at first such navigating to a folder check the directory and list only folders in that directory. (basic)
- Complement learning with an outside source (basic)
- Create your first PowerShell function with parameters (basic)
- Create your second function that can accept your first function in a pipeline (basic/intermediate)
- Try PowerShell ISE and Visual Studio Code to decide what you prefer or "why not both?" (basic)
- Learn Arrays, Hashtables and CustomPSObjects (intermediate)
- Scan other resources if someone else has solved your problem (basic)
- Build scaffolding or use existing scaffolding/framework to start your first PowerShell module. Plaster or PSFramework (I recommend PSFramework due to great support and a more hands off solution) (intermediate)
- Increase development speed use shortcuts and other "cheat codes"
- Set up version control for your module (intermediate)
- Set up Script Analyzer and Pester tests for your module (intermediate)
- Debug your scripts with ease to pass your Pester tests and increase your quality (intermediate)
- Deploy your module to a private or public repository (intermediate)
- Set up branching for your version control system and invite others to use your repository (advanced)
- Turn on continuous integration for your pipeline (advanced)
- Document your module manually or with platyPS (intermediate)
- Contribute to other community modules (advanced)
- Use your functions/module in pipelines (Jenkins, Azure DevOps, Scheduled Tasks)
- Tweak your pipelines/functions/module files for faster executions (intermediate)
- Looking at PowerShell workflows (intermediate)