I got started with PowerShell thanks to the encouragement and enthusiasm of a friend and former colleague. Following that, I've largely developed my knowledge through the standard combinations of trial + error + googling and more recently (as is evident) by doing my best to engage with and give back to the community.

XKCD: Code Quality

When I meet people who are new to PowerShell and they ask me to advise them on resources to help them get started I often mention the Learn PowerShell in a Month of Lunches book (which recently released as a 3rd edition) mostly because I've seen it recommended by others in the community. However I personally had not read it and that seemed.. well.. wrong.

Equally it may seem a little bizarre that I read it now, but what I found was doing so helped me to confirm some things I knew (which has given me more confidence when attempting to explain them to others) and has clarified some things I was murky about. It also taught me a few things I didn't know at all and I was surprised (and impressed) by the depth and inclusion of some topics which I didn't expect in a book (I always assumed is) aimed at beginners.

-- When I put together the original list of topics I wanted to cover (see below) I decided it was too long for a single blog post. I also found that they fell in to four broad topics and so to make things more specific for future googlers, each major topic is getting a blog post of it's own which I will link to when they are ready.

Without further ado, here are some things I learnt from reading Learn PowerShell in a Month of Lunches (#TILFMOL):

  • #1 The PowerShell Pipeline
    • How pipeline input knows where to go
    • If you can't get input to a parameter via the pipeline, there is another way
    • One script one pipeline
  • #2 PowerShell Help
    • Help vs Get-Help
    • The meaning of square brackets in help:
      • Optional/Positional Parameters
      • Array Input
  • #3 PowerShell Remoting
    • Executing remote commands on one or many machines
    • Deserialised objects are the result of commands
    • Creating Endpoints
  • #4 PowerShell Jobs (coming soon)
    • Creating background jobs locally
    • Running a command -asjob
    • Creating scheduled jobs (not scheduled tasks)

Happily, I can now confidently and personally recommend Learn PowerShell in a Month of Lunches, not only for beginners but to anyone looking to validate and further their knowledge of PowerShell.