Back to Admin Workflows

Optimize Microsoft 365 Licenses with PowerShell

Stop paying for licenses nobody uses. Build a monthly PowerShell workflow that reports on, reclaims, and reassigns Microsoft 365 licenses.

Microsoft 365 licensing is one of the easiest places to lose money. Inactive accounts, old shared mailbox conversions, and unassigned add-ons all stack up — and nobody notices until the renewal conversation.

PowerShell makes this auditable on a schedule. PSForge gives you the licensing tasks, ready to drop into a workflow you can run every month.

Where M365 licensing waste hides

  • Disabled or never-signed-in users still holding licenses
  • Departed employees whose accounts were not properly offboarded
  • Add-ons (Power BI Pro, Defender, Visio) assigned by mistake
  • Shared mailboxes still consuming a paid mailbox license

What a license workflow should give you

The goal is not just a one-off report. It is a recurring workflow that exports usage, flags candidates for reclamation, removes licenses safely from accounts that fit the rules, and keeps a paper trail.

PSForge takes care of the script generation so you can focus on the policy: who counts as inactive, what happens to their data, and which SKUs you want to recover.

Example monthly license optimization workflow

  1. Export current license usage by SKU
  2. List inactive accounts that still hold licenses
  3. Remove licenses from disabled or departed users
  4. Reassign reclaimed licenses to a pending-hire pool
  5. Generate a license savings summary for finance

Final thoughts

Most organizations could reclaim a real percentage of M365 licenses if they just had the time to look.

A repeatable PSForge workflow turns that one-off project into something that runs every month.

Related guides