This page is used to keep track of resources used in my professional development, or things I have found afterward that I wish I had known.
PowerShell Resources
Books
Roughly in the order I would read them.
Learn PowerShell in a Month of Lunches
- The authors recommend a chapter a day. If you are not a complete beginner you can move quickly through chapter 8 before it starts getting insightful. I wish someone had handed me this instead of letting me stumble through trial and error.
Learn PowerShell Scripting in a Month of Lunches
- Picks up where the first one leaves off and assumes you are now writing your own functions and modules. Covers Pester too.
- Companion GitHub
Secrets of PowerShell Remoting
- Month of Lunches introduces PSRemoting and WSMan; this one explains the nuances you hit in an actual enterprise. Honestly all of the DevOps Collective books are worth a look.
Mastering PowerShell Scripting
- Chris Dent is very active and very knowledgeable, and his book on automation does not disappoint. If you join either of the Discords below, he is easily accessible.
Practical Automation with PowerShell
- Another book of worked automation examples and how to design your own.
- Companion GitHub
PowerShell Automation and Scripting for Cybersecurity
- The other automation books are great, but I have always had a soft spot for working with InfoSec. Learning what they look for makes collaboration easier and helps you build things securely the first time.
- Not PowerShell-specific, and the only e-book-only entry here. There is an included Automating Microsoft 365 with PowerShell that you can buy separately if you only want the PS material, but I would get the whole thing if you work in the MS stack. It is constantly updated and is basically the reference for M365 administration.
Browser Extensions
Every Microsoft product has its own portal and none of them link to each other. These help.
- Puts every M365 admin portal in one menu. Saves a lot of time flipping through tabs and bookmarks trying to remember a URL.
- Shows you which Graph calls the portal makes behind the scenes, and translates them into PowerShell for your own scripts. The fastest way to automate something you have been doing by hand.
- For when you want to see or replay an API call that Graph X-Ray or browser dev tools did not catch. Worth knowing that Postman now has a VSCode extension with full functionality, so you do not need the separate desktop app.
Discords
- A bunch of hard-hitting PowerShell nerds, from people involved with the actual PowerShell repo and dev team to those who work on parts of VSCode. Very friendly place — I have never been shamed for any of the pretty dumb questions I have put to them.
- Lots of MSP folks working across different stacks, plus active Microsoft MVPs and some actual Microsoft employees. Most of the server is awake during US East Coast business hours.
Practical Hands-On
Reading only gets you so far. These make you actually do the thing.
- Training on Windows administration, PowerShell, and Active Directory, with a free tier. Fair warning on performance: fine on day one, laggy and unresponsive every visit after.
- Fill-in-the-blank tests in the style of Koans, which is a great way to drill syntax and logic. It now lives under PowerShell.org and is being actively maintained again after years without updates.
- Fun little SSH challenges where you have to hunt around the host for the password to the next level. Practical, and it makes you think critically about solving problems without being spoon-fed.
Websites
- One article per topic (hashtables, arrays,
PSCustomObject, exceptions,switchand more), covering the edge cases and mistakes the reference docs skip. The original set came from Kevin Marquette’s PowerShellExplained.com.
- One article per topic (hashtables, arrays,
Parts 1 and 2 of this series by Paul Winstanley
- The series overall is about W365, but parts 1 and 2 are a great Graph primer: setting up VSCode, registering an app and picking permissions, connecting with it, and using Graph X-Ray to find commands.
- Pester is the testing framework for PowerShell. If you use something like Maester for Entra auditing, the custom tests are written in Pester.
- The community style guide and best practices, started by Don Jones, Matt Penny, Carlos Perez and Joel Bennett. It covers layout, naming, error handling and output, so your code reads like everyone else’s when someone else has to maintain it.
- Not PowerShell-specific, but useful for regex examples. RegEx Tester will validate what you come up with.
- Tobias Weltner’s collection of small, focused examples: validating input, reading installed software, converting
SecureStrings, Wake-on-LAN. Useful when you need a working starting point for one specific task.
- Tobias Weltner’s collection of small, focused examples: validating input, reading installed software, converting
Videos
PowerShell Master Class - PowerShell Fundamentals
- John Savill’s 13-part series, working up from fundamentals through the pipeline, remoting and scripting. It was recorded in 2019, before PowerShell 7 became the default, so some specifics are from the Windows PowerShell era. The concepts have held up fine.
PowerShell + DevOps Global Summits
- Session recordings from PowerShell.org’s annual summit. Past the beginner material, this is where the deep dives live, often from people who work on PowerShell itself.
- The European counterpart to the Summit, with the same idea: a conference’s worth of recorded talks, free to watch, and searchable by title for whatever you’re stuck on.
- You can hit Graph from
Invoke-RestMethodor any other language, but I think of PowerShell and Graph as inseparable at this point. If you are managing Microsoft 365 at all, you will end up relying on Graph, so you may as well learn how to start.
- You can hit Graph from
Working with PowerShell
There are two versions of PowerShell: Windows PowerShell (powershell.exe), which is baked into the OS, and PowerShell 7.x (pwsh.exe), which is cross-platform and has to be installed separately.
Install PowerShell 7 and make it your default everywhere before you start installing modules — it will save you a lot of grief. Most modules written after 2020 target 7. If you hit a legacy module that only works on Windows PowerShell 5.x, import it with the -UseWindowsPowerShell switch.
My PowerShell Modules
The ones I have published to the PowerShell Gallery. Each installs by name:
| |
- Seeds a realistic identity test environment in Entra ID, Active Directory, Okta, Authentik, FreeIPA, PingOne or OneLogin, then tears it down again, proving it owns every object before deleting it. Written up in Test Data That Breaks Scripts on Purpose.
- Predicts which accounts, services and clients a Kerberos encryption type change will break before you make it, from DC events 4768, 4769 and 4771 correlated against directory configuration. Written up in Knowing What Breaks Before You Turn Off RC4.
- Predicts Entra Conditional Access sign-in outcomes before report-only policies go live. Written up in Conditional Access: Outcomes, Not Verdicts.
- Tests Intune scripts before Intune does: static rules, a runtime harness, Pester assertions, a Graph pre-flight over the tenant’s deployed scripts, and readers for the agent’s logs.
Commonly Used Modules
Not an exhaustive list, but these cover most of what I do and are the first things I install on a new workstation.
Worth noting: as PowerShell 7 becomes the default, Install-Module is being superseded by Install-PSResource. Get familiar with the new syntax now.
Microsoft Modules
AzExchangeOnlineManagement- EnhancedHTML2
- Extends
ConvertTo-HTMLso your reports do not look like they came out of 1998.
- Extends
Microsoft.GraphandMicrosoft.Graph.Beta- This is an SDK, so expect PowerShell that does not feel much like PowerShell — using it, you are dev-lite. Install both; most of the functionality lives in the beta commands, which hit the
/betaGraph endpoint. Eventually you will find that calling the endpoints directly gives you more than the module does. - If the SDK’s structure really bothers you, Microsoft.Graph.PlusPlus smooths it over.
- This is an SDK, so expect PowerShell that does not feel much like PowerShell — using it, you are dev-lite. Install both; most of the functionality lives in the beta commands, which hit the
- Microsoft.Graph.Entra and
Microsoft.Graph.Entra.Beta- Built for admins who were not used to the structure Graph expects, and meant as a direct replacement for the retired
AzureADmodule. It bridges the gap, but does not cover everything Graph can do.
- Built for admins who were not used to the structure Graph expects, and meant as a direct replacement for the retired
Microsoft.Online.SharePoint.PowerShellMicrosoft.PowerShell.ConsoleGuiToolsOut-ConsoleGridViewis great for picking through data without leaving the terminal.
Microsoft.PowerShell.GraphicalToolsOut-GridViewis the GUI popout version of the same idea. Windows only.
MicrosoftTeamsPowerShellGetandMicrosoft.PowerShell.PSResourceGetPowerShellGetis only needed if you are on Windows PowerShell. PowerShell 7.4 and later ships with its successor,Microsoft.PowerShell.PSResourceGet, already installed.
Vendor-Specific Modules
- Lenovo Client Scripting Module
- For Lenovo fleets. Gets you system and docking station details you would otherwise be chasing by hand.
Third-Party Modules
Always assess and evaluate before putting any of these into production.
- BurntToast
- Sends custom toast notifications in Windows, which is handy when a script needs to actually get a user’s attention.
- Graph EasyPIM
- Activating PIM roles from the CLI instead of clicking through Entra blades.
- ImportExcel
- Despite the name, I almost always use it for exporting. Working in a Google Workspace environment made me hate how Sheets handles CSVs so much that I became dependent on this to get properly formatted spreadsheets out. It also does a ton of real Excel work: autosizing columns, pivot tables, charts.
- Microsoft.Graph.PlusPlus
- Wraps the Microsoft.Graph SDK so it reads more like PowerShell.
- Pansies
- Styled terminal output — gradients, hyperlinks, HTML color names. Purely cosmetic, still nice.
- platyPS
- Great for building out documentation for modules you write, once you get used to the schema it wants.
- psframework
- A logging module I wish I had found years earlier. Saves an enormous amount of time, and I have found plenty of uses beyond logging — it makes some param handling much simpler.
Microsoft Graph Command Helpers
These are cmdlets rather than modules — they ship inside Microsoft.Graph.Authentication and are the three I reach for most when working out what a call needs.
- Find-MgGraphCommand
- Shows what permissions a cmdlet needs and which URI it is hitting.
- Find-MgGraphPermission
- Looks up the details of a permission a script or app has.
- Invoke-MgGraphRequest
- A cleaner Graph-specific alternative to
Invoke-WebRequestorInvoke-RestMethodfor when the endpoint does not have a cmdlet with all the options built out yet.
- A cleaner Graph-specific alternative to
VSCode
PowerShell ISE does not support version 7+ and is not getting new features. Learn VSCode, install it anywhere you were using ISE (especially jump boxes), and set up an ADMX with Intune so only approved extensions and features are in play.
Tunnels are a great remoting feature as long as you secure them properly.
If VSCode feels too dev-y and you miss ISE — especially for building GUIs — PowerShell Studio from Sapien is a solid replacement, assuming you can get approval for the $550 license.
Extensions
- PowerShell Extension Pack
- Justin Grote’s bundle: the official PowerShell extension plus about thirty others, including the Pester test explorer, Remote SSH, YAML support, Git Graph, indent-rainbow and Error Lens, which puts PSScriptAnalyzer warnings at the end of the offending line as you type. One install gets a fresh machine to a sensible PowerShell setup, and you uninstall whatever you don’t use afterwards.
- Excel Viewer
- Opens CSV and XLSX files as a sortable, filterable grid inside VS Code. The quickest way to check what
Export-Csvor ImportExcel wrote without switching to Excel.
- Opens CSV and XLSX files as a sortable, filterable grid inside VS Code. The quickest way to check what
- Rainbow CSV
- Colors each column of a CSV or TSV in a different shade while leaving it as plain text, so you see the real delimiters and quoting that a grid view hides. That is usually where an
Import-Csvthat comes back wrong has gone wrong. It can also align columns and run SQL-like queries over the file. Not part of the pack.
- Colors each column of a CSV or TSV in a different shade while leaving it as plain text, so you see the real delimiters and quoting that a grid view hides. That is usually where an
- Markdown Preview Enhanced
- A richer live preview than the built-in one, with Mermaid diagrams, a table of contents and export to HTML or PDF. Handy for READMEs and for module help, since platyPS writes its documentation as Markdown.
More VSCode Goodies
- Copilot Commit Message Instructions
Copilot’s generated commit messages lack detail and consistency. The
github.copilot.chat.commitMessageGeneration.instructionssetting fixes that. It takes inlinetextor afilepointing at a Markdown file of rules. A starting point forsettings.json:1 2 3 4 5"github.copilot.chat.commitMessageGeneration.instructions": [ { "text": "Use Conventional Commits: type(scope): summary, where type is feat, fix, docs, refactor, test, chore or perf." }, { "text": "Keep the summary under 72 characters, in the imperative mood, with no trailing period." }, { "text": "Add a body when the change is not obvious from the diff: explain why, not what." } ]
- AI PowerShell Standards
- My PowerShell development standards, shipped as GitHub Copilot instructions and Claude Code rules, so AI-generated code follows the same conventions for style, security and Pester testing across every project. The background is in Transforming PowerShell Development with GitHub Copilot.
- Oh My Posh
- Themes for your terminal. Fonts have to be set separately through the Integrated Font Family setting, and
$PROFILEfor VSCode is a different file than your non-VSCode pwsh profile. Current favorites arenight-owlandquick-term. 
- Themes for your terminal. Fonts have to be set separately through the Integrated Font Family setting, and
- Viewing Default Settings in VS Code
- VS Code Keybindings
- Good-to-know keybindings.
CTRL + Hfor find and replace alone makes things smoother.
- Good-to-know keybindings.
Microsoft 365
Interview Prep
Even with hands-on experience it is worth a refresher so you do not fumble a topic you actually know. This M365 interview question guide is a good one to skim beforehand.
Useful Non-Portal Tools
Microsoft 365 Apps Configuration Tool
- I often see people writing scripts or remediations to manage Office configuration when this tool should be used instead. Pick your policies in the GUI, get XML out, far less room for error.
- Useful for exploring Graph’s URI structure, the permissions a call needs, and what the responses actually look like before you write any code against it.
Microsoft Remote Connectivity Analyzer
- The hub for testing Exchange, Teams, DNS, and mail flow issues. I constantly forget it exists and come up with some interesting workarounds instead, so it is here as a reminder to check it first.
Test Lab Resources
Lab Setup
Hydration Kit for Windows Server 2022
- Builds a full on-prem mockup: AD, SCCM, SQL, and Windows clients.
Microsoft 365 Test Environment
- Automates standing up an M365 lab tenant, which matters more now that Microsoft has stopped handing out dev tenants.
- Every lab needs meaningful data to test on. This PowerShell module creates and tears down test data across multiple identity providers.
Cybersecurity Lab by Ben Heater
- Proxmox as the hypervisor, Wazuh for SIEM, and a set of pentesting VMs.
- Another Debian/Proxmox turnkey option. Be warned that it completely takes over the host, so skip it if you need that machine for anything else.
- Microsoft bumped the free tier to 10 databases at up to 32 GB each, which is plenty for development or test automation.
Guides
So you have set up the lab — now what?
- Learn to Cloud
- Vendor agnostic, so you can pick AWS, GCP, or Azure. Good foundations either way.
- Bootcamps from A Guide to Cloud
- Free videos on a range of Microsoft topics. Mostly Azure, but there is 365 and Sentinel material in there too.
MCPs (Model-Context-Protocol)
These are under test lab resources on purpose — they are proof-of-concept tools and not something to run in production without evaluating first. Model-Context-Protocol is an open standard for letting LLMs work with data sources through natural language. Anthropic created it and has since handed it to the Linux Foundation’s Agentic AI Foundation, so it is now vendor-neutral.
Where they shine is reads and analysis: you can ask questions of an Entra or AD environment without deep scripting or portal experience. Writes are another story — batch work like adding group members is slow and inefficient right now.
Available MCP Projects
- MCP for Entra/Azure by Merill Fernando. I wrote up my setup experience in this post. Excellent for querying Entra with natural language.
- MCP for on-prem Active Directory by Microsoft MVP Ruud. The built-in guardrails help, but I would still review everything carefully before it goes anywhere near production.
- Microsoft’s own implementation, with an in-depth blog post. It has moved from its original repo into microsoft/mcp, the catalog of all of Microsoft’s official MCP servers.
Microsoft MCP Server for Enterprise
- Microsoft’s own take on what Lokka does: natural-language questions over your Entra tenant, translated into Graph calls. Read-only and still in preview, but it respects existing Graph permissions and needs no extra license.
- Cloud-hosted, and gives your assistant live access to official Microsoft documentation instead of whatever it remembers from training. Handy for grounding answers in current Learn content. Generally available since November 2025, and free with no sign-in.
- Cloud-hosted, by Ugur Koc. Keeps thousands of community KQL examples on hand so your assistant is not guessing at syntax or going off to index the web itself. That is a real productivity gain when you are writing your own queries for Log Analytics workbooks or Intune reports.
- It never touches the tenant and never executes anything, it just returns examples. The queries you build off the back of them are the ones that actually hit your environment.
- By MVP Doug Finke. You write PowerShell functions with descriptive comments and can then query them in natural language. Note that functions have to be declared
globalfor the server to see them.
- By MVP Doug Finke. You write PowerShell functions with descriptive comments and can then query them in natural language. Note that functions have to be declared
Certifications
Personal thoughts on industry certification usefulness, all opinions my own.
PeopleCert (formerly Axelos)
Whether it was the PeopleCert acquisition or their own doing, this company is everything bad about the certification industry. They make you pay a subscription to keep your digital badge current, and they introduced renewals on certs without adding any new material to justify them.
That said, they are firmly entrenched — Agile, ITIL, PRINCE2, PMP. For now we mostly have to suck it up and deal with their terms.
ITIL 4 Foundation
- Establishes the service management framework most modern enterprises follow: change control, incident vs problem, and a pile of ITIL-specific vocabulary that comes down to rote memorization.
- General purpose enough to add value whether you are technical, in sales, or in management.
- Used to be a lifetime certification, now renews on a 3-year cycle despite no revisions to the material.
CompTIA
These are great because they are vendor agnostic. They are also a little pricey early in your career, in the $300–400 range per exam. They last three years unless you renew something “downstream”, and they stay current when you earn other vendors’ certifications — my Microsoft certs renew everything I hold.
There is no shortage of study material, but I cannot recommend Professor Messer enough for the CompTIA trifecta (A+/Network+/Security+). His YouTube playlists are updated to the current exam versions, comprehensive, and free.
A+
- The industry standard starting point. It is a mile wide and an inch deep, there to introduce you to the basics of everything.
- Takes two exams to pass — you are not A+ certified until you have passed both.
- On its own it holds no real weight on a resume, but it will get you the interview for entry-level roles.
Network+
- Wired and wireless networking fundamentals, with an emphasis on subnetting without a calculator like a monster.
- Gives you networking familiarity well beyond what A+ covers.
- If I had a do-over I would get the CCNA instead — it carries more weight and goes further, including IOS commands.
Security+
- Covers network security, risk management, cryptography, and threat mitigation.
- This is the one you will get the most resume mileage out of.
- You do not need to be aiming at an InfoSec or pentest role to benefit — virtually anyone IT-adjacent will use these concepts.
Linux+
- Honestly, I bought this voucher alongside the others to get the best discount out of my CompTIA Store subscription, then took it a week before it expired with zero prep and passed.
- TLDR: it is surface-level Linux that anyone slightly familiar could pass. LPIC or Red Hat certs will get you more mileage.
Microsoft
Microsoft certs are well recognized and mapped to specific job roles. Most renew annually through a free online assessment; the fundamentals exams are lifetime-valid.
Every exam voucher outside the fundamentals track is $165, and the certification is good for a year with free self-paced renewal through your Microsoft account.
For the full map of certifications and their prerequisites, see Become Microsoft Certified, which links through to each exam and its Learn pages. Check the exam retirement list before you start studying. Microsoft retires exams with only a few months’ notice. Speaking of Learn — it is excellent study material, free, and you can access Learn pages during the exam, so getting familiar with how it is organized pays off twice. I would take Learn over the LinkedIn Learning videos on the same topics; of the few I have audited, several were out of date or outright wrong. They have also started publishing official course videos to go along with it.
There is also Applied Skills, free scenario-based credentials focused on a single task. I am not sure they carry weight on a resume, but they are useful for validating a specific skill if you are angling for an internal move.
-900 Series / Fundamentals
- Lifetime-valid and very general — a high-level overview of what a given product or service area covers.
- They will not validate skills, but they are good for dipping your feet in. I picture these as existing for recruiters and non-technical managers, or as a way to find out whether a subject interests you.
- These used to be free through virtual training days, but that program has ended. Check the Certification Hub for current discounts.
Study and Practice Environments
Getting hands-on is harder as everything moves to the cloud and normal subscriptions stop being feasible for one person. You can stand up an Azure Free Trial and activate trial licenses for whatever you are testing. Be careful: you generally need a card on file, and it is easy to blow past the $200 cap if you are not watching.
See Lab Setup for building your own instead, keeping in mind some cloud features will start charging you once the trial dates pass.
Role-Based Certifications
The ones below are the paths I have taken or looked hardest at. Each maps to a job role rather than a product.
MD-102 – Endpoint Administrator
- Formerly “Managing Modern Desktops.” This is the one if you manage Windows clients.
- Covers Windows versions, Active Directory, Group Policy, SCCM, Intune, and Autopilot.
- The modern successor to the old MCSA for desktop management.
SC-300 – Identity and Access Administrator
- Microsoft Entra, user and group management, SSO, and app registrations.
- The right fit if you work in IAM or own access control policy.
MS-102 – Microsoft 365 Administrator
- Retiring 30 November 2026. Take it before then or not at all.
- Expert-level. The certification also needs one active associate cert: MD-102, SC-300, MS-700 or SC-401.
- Tenant setup, conditional access, Defender, Teams, and compliance through Purview.
- The closest modern equivalent to the old MCSE.
AZ-104 – Azure Administrator
- The core Azure admin cert: VMs, networking, storage, subscriptions, and identity.
- Includes scripting and automation with PowerShell, ARM templates, and the Azure CLI.
AZ-305 – Azure Solutions Architect Expert
- Builds on AZ-104, but shifts from how to why — planning solutions and justifying design choices.
- Disaster recovery, cost optimization, hybrid environments, and secure architecture.
AZ-800 / AZ-801 – Windows Server Hybrid Administrator
- Retired 30 September 2026, with no direct replacement. Left here for anyone who already holds it: it stays on your transcript, but it can no longer be earned or renewed.
- Windows Server combined with cloud services, and it was the only Microsoft path that validated Windows Server administration skills at all.
Specialty: Azure Virtual Desktop
- Microsoft’s VDI offering, the alternative to Citrix or VMware Horizon.
- Worth it if you support remote work environments or virtual desktops.
Okta
Okta’s exams work a little differently: you cannot go back and review or change an answer. Questions are weighted individually, and you are often picking the best answer rather than the only correct one.
Okta Certified Professional
- Intro-level, aimed at sales engineers, managers, or entry-level admins.
- Covers Okta’s basic capabilities, navigating the UI, and core configuration.
- I earned this while holding only basic Help Desk permissions, and passed the renewal two years later without studying.
- It is worth more inside an Okta shop than it is in a hiring pipeline.
Western Governors University (WGU)
WGU is fully online and self-paced, offering Bachelor’s and Master’s degrees in IT and related fields. You pay by six-month term and finish as many courses as you can inside that block, which is what makes it cheap if you move fast.
Their degrees often bundle industry certification vouchers (CompTIA, Cisco, Microsoft), and certs you already hold can count as course credit.
Common Pitfall
Plenty of people start at WGU and stall out, usually from life circumstances or from not planning the front end. Prep work before you enroll can dramatically shorten the degree and cut what you pay.
Pre-WGU Prep
- Around $300 for 4 months of unlimited self-paced courses, two at a time.
- Similar to CLEP/DANTES (for military learners), with no proctoring.
- Many of these credits transfer. Check transfer eligibility here.
- $99 for a 2-month block covering one course.
- Gives you a structured way in, and the credit counts toward your degree.
- The $99 is reimbursed once you officially enroll.
Transferable Certifications
- Certs you have already earned can replace course requirements outright. Check accepted certs here.
Existing College Credit
- An Associate’s degree or prior coursework may count too.
Enrollment Timing
Expect 45–60 days from starting your application to the beginning of your term. Plan your prep work backward from the start date you actually want.
Summary
With enough transfer credit — Sophia, WGU Academy, prior coursework, certifications — you can walk into WGU’s IT Bachelor’s program with only 60 credits left, which puts graduating in one or two terms within reach.
