2021: A PowerShell Year in Review

2021 was quite the year for PowerShell. We saw a lot of first and improvements in the platform. Not just from Microsoft but the community as a whole. I also personally hit a few milestones.

First and foremost, happy 15th birthday to PowerShell.

This year was also a huge year for me. My book Practical Automation with PowerShell was released for early access. You can purchase the eBook now and read chapters 1-8 right away, with chapters 9-11 coming very soon. The full book will be available this spring in eBook or hardcopy. This book aims to help you take your PowerShell skills to the next level and create full enterprise-ready automations.

Unfortunately, my blog posting has slowed a bit due to writing an entire book, but I did hit the 100th edition milestone for PowerShell Weekly. And I’m planning some redesigns for it later this year.

This year also marked my Podcast debut on IT Reality Podcast. I was also honored to present Automate Your Entire Server Patching Process for PowerShell Southampton and Automate the Admin for the New York PowerShell Meetup.

I’m looking forward to continuing my journey with PowerShell and technology in general. But I know most of you aren’t here to read about me, so here is my recap of some of the highlights from this year.

PowerShell Team

The PowerShell team at Microsoft has a busy year. me other firsts for PowerShell this year.

  • PowerShell 7 saw 12 different production releases, including 7.2.0 in November, followed quickly by 7.2.1 in December. There were also 11 preview and RC releases.
  • SecretManagement and SecretStore modules are made generally available, giving PowerShell a secure, repeatable, customizable way to store and retrieve passwords and secrets inside your scripts/automations.
  • PowerShell 7.2 updates are made available via Microsoft Update
  • Azure AD modules were migrated to Graph
  • PowerShell Crescendo 0.7.0-Preview.4 is released. Getting us one step closer to having a production-ready framework to develop PowerShell cmdlets for native OS commands. On any platform.
  • PowerShellGet 3.0 Preview 12 Release includes more parameters, additional pipeline support, more wildcard support and a number of other features detailed in the link provided.

The Community

Some remarkable and noteworthy community contributions from this year.

  • @kieranwalsh made a little PowerShell script to scan all locally installed modules and update them.
  • @Christopher83 with a great tip about using CTRL+SPACE to get a list of cmdlets.
  • @Jaap_Brasser developed a fantastic module to help configure Windows 11.
  • @SimonWahlin released the MyTesla module to automate your Tesla. Because why not!
  • @Ba4bes wrote a post showing you to create an API to find an Azure resource abbreviation. And how to turn it into an Azure Function App. All with PowerShell.
  • @TylerLeonhardt released Inline Values support for PowerShell. Allowing you to level up your PowerShell debugging by seeing values of variables right inline in the VS Code editor.
  • u/Kathy_Cooper1012 shared a script to audit Office 365 user’s activity with PowerShell.
  • u/rumorsofdemise shows how to test connectivity to ports from a server.
  • u/MadBoyEvo with the only command you will ever need to understand and fix your Group Policies (GPO).

PowerShell and Security

I don’t know about the rest of you, but it felt like every time we finished resolving some major vulnerability, another would pop up. Thank full the community and PowerShell were there to help us through some of the tough times.

  • @0gtweet with a script to remotely stop all spoolers where only default printers exist. #PrintNightmare
  • @sstranger created Get-Log4shellVuln.ps1 to scan all local drives for the presence of log4j jar files and analyzed the contents of the jar file to determine if it is vulnerable to log4shell (CVE-2021-44228) vulnerability
  • @darkQuassar  released a new package called AzureHunter, a Cloud Forensics Powershell module to run threat hunting playbooks on Azure UnifiedAuditLog data.

Top 10 PowerShell Weekly Links

These links were the most visited from PowerShell Weekly Newsletter

  1. Jeff Hicks: Better Event Logs with PowerShell
  2. u/DustinDortch: Why is  += so frowned upon?
  3. Kelvin Tegelaar: Tech in 5 minutes: Azure Functions
  4. Grzegorz Tworek: StopAndDisableDefaultSpoolers.ps1
  5. Adam Driscoll: Search Everything with PowerShell
  6. Idera: Finding System Paths
  7. Exchange Team: EXO V2 PowerShell module is now Generally Available on Linux & macOS
  8. Ioan Popovici: Clean-ADInactiveDevice
  9. Adam Driscoll: This is a PowerShell syntax\technique I was unaware of until today.
  10. Damien Van Robaeys: OneDrive and PowerShell: Get size and size on disk.

Modules

These modules were either released this year or received notable updates.

  • Pester v5.3.1 Pester provides a framework for running BDD style Tests to execute and validate PowerShell commands inside of PowerShell. Version 5.3.x included a bunch of new functionality, including a new Code Coverage mode, configure output for failed tests, automatic CI detection, and much more.
  • PSSlack v1.0.6 PowerShell module for the Slack API. Version 1.0.6 was released with multiple improvements and updates.
  • Foil v0.1.0 A PowerShell Crescendo wrapper for Chocolatey – https://github.com/ethanbergstrom/Foil
  • PnP.PowerShell v1.9.0 Microsoft 365 Patterns and Practices PowerShell Cmdlets
  • Posh-SSH v3.0.0 Provides SSH and SCP functionality for executing commands against remote hosts.

I know this post doesn’t even come close to capturing even a small amount of community contributions. So please feel free to comment or contact me with the ones you think should be included.