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.

  1. Gather an understanding of what is PowerShell (and all the different version)  and what you want to achieve with it (basic)
  2. Gather some basic resources so you know where to look for when you are stuck (basic)
  3. Come up with your own rules (basic)
  4. 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)
  5. Complement learning with an outside source (basic)
  6. Create your first PowerShell function with parameters (basic)
  7. Create your second function that can accept your first function in a pipeline (basic/intermediate)
  8. Try PowerShell ISE and Visual Studio Code to decide what you prefer or "why not both?" (basic)
  9. Learn Arrays, Hashtables and CustomPSObjects (intermediate)
  10. Scan other resources if someone else has solved your problem (basic)
  11. 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)
  12. Increase development speed use shortcuts and other "cheat codes"
  13. Set up version control for your module (intermediate)
  14. Set up Script Analyzer and Pester tests for your module (intermediate)
  15. Debug your scripts with ease to pass your Pester tests and increase your quality (intermediate)
  16. Deploy your module to a private or public repository (intermediate)
  17. Set up branching for your version control system and invite others to use your repository (advanced)
  18. Turn on continuous integration for your pipeline (advanced)
  19. Document your module manually or with platyPS (intermediate)
  20. Contribute to other community modules (advanced)
  21. Use your functions/module in pipelines (Jenkins, Azure DevOps, Scheduled Tasks)
  22. Tweak your pipelines/functions/module files for faster executions (intermediate)
  23. Looking at PowerShell workflows (intermediate)