M365-LicenseOptimizer

1.0.0

Microsoft 365 license usage analysis and cost optimization. Identifies underutilized licenses, inactive licensed users, duplicate assignments, and generates savings recommendations. Generates HTML dashboard reports. Requires Microsoft.Graph PowerShell SDK.

Minimum PowerShell version

5.1

Installation Options

Copy and Paste the following command to install this package using PowerShellGet More Info

Install-Module -Name M365-LicenseOptimizer

Copy and Paste the following command to install this package using Microsoft.PowerShell.PSResourceGet More Info

Install-PSResource -Name M365-LicenseOptimizer

You can deploy this package directly to Azure Automation. Note that deploying packages with dependencies will deploy all the dependencies to Azure Automation. Learn More

Manually download the .nupkg file to your system's default download location. Note that the file won't be unpacked, and won't include any dependencies. Learn More

Owners

Copyright

(c) 2026 Larry Roberts. All rights reserved.

Package Details

Author(s)

  • Larry Roberts Independent Consultant

Tags

Microsoft365 M365 License Optimization CostSaving Office365 Azure

Functions

Invoke-LicenseOptimization Get-LicenseInventory Get-UnderutilizedLicenses Get-InactiveLicensedUsers Get-LicenseSavingsReport

Dependencies

This module has no dependencies.

Release Notes

Initial release. License inventory, underutilization detection, inactive user identification, savings reporting, and HTML dashboard generation.

FileList

  • M365-LicenseOptimizer.nuspec
  • .git\COMMIT_EDITMSG
  • .git\HEAD
  • .git\config
  • .git\description
  • .git\hooks\applypatch-msg.sample
  • .git\hooks\commit-msg.sample
  • .git\hooks\fsmonitor-watchman.sample
  • .git\hooks\post-update.sample
  • .git\hooks\pre-applypatch.sample
  • .git\hooks\pre-commit.sample
  • .git\hooks\pre-merge-commit.sample
  • .git\hooks\pre-push.sample
  • .git\hooks\pre-rebase.sample
  • .git\hooks\pre-receive.sample
  • .git\hooks\prepare-commit-msg.sample
  • .git\hooks\push-to-checkout.sample
  • .git\hooks\sendemail-validate.sample
  • .git\hooks\update.sample
  • .git\index
  • .git\info\exclude
  • .git\logs\HEAD
  • .git\logs\refs\heads\master
  • .git\logs\refs\remotes\origin\master
  • .git\objects\0a\8ed567c4c63930ed9f08ffe93e5b7e69fe85a4
  • .git\objects\40\dee87722a96b004f1c9eb57d7dee05013b58c9
  • .git\objects\41\bf999d9bd09494ac2446e010e0a03b8e84ecc1
  • .git\objects\49\f7ed07fc0cf6a1ad0299654bc5d771125e8f57
  • .git\objects\51\b8b95032d4962f503dab9706879640677dcd40
  • .git\objects\60\b6c557c88dfbb1b6556b0d105262523b2c8bc1
  • .git\objects\6a\21e3f3046bdf0d04703436fac92591064279e7
  • .git\objects\6b\82cc5b348eb31ba891b99e54e17f7a465daeaa
  • .git\objects\74\72b459ca8cb05046acde29d9e0c031f06c0bac
  • .git\objects\86\ab11b6993999ce6fd72d7744d8500dab2124ba
  • .git\objects\91\9e77d0ffffe6e85d9333d1489e246b2344d3f8
  • .git\objects\96\2c42de2aa31bf8b6f79287554e4eee3111df80
  • .git\objects\a1\573eba3a90cb8968ef89c62075544a2842ad3e
  • .git\objects\b1\1bc3fb0cf34d28f0954ffdf29385f140facd6c
  • .git\objects\ba\134b28583d98d9ad169d3ed3b106fd121795de
  • .git\objects\bb\e1d11a1f1850f8af6f7cc7ee331fdd4abc542f
  • .git\objects\c5\688ec732dce2e1dde7a906e1a595f1da57f189
  • .git\objects\c7\7cf761f3770c16238c5741e01a92df40867045
  • .git\objects\db\ff25a41eec257801edce0d05e86ab4041e0639
  • .git\objects\e9\75b59144fff88efc9ad4a7680ebeeed9dd54ef
  • .git\refs\heads\master
  • .git\refs\remotes\origin\master
  • LICENSE
  • M365-LicenseOptimizer.psd1
  • M365-LicenseOptimizer.psm1
  • Private\Get-LicenseFriendlyName.ps1
  • Private\New-HtmlDashboard.ps1
  • Private\Test-GraphConnection.ps1
  • Public\Get-InactiveLicensedUsers.ps1
  • Public\Get-LicenseInventory.ps1
  • Public\Get-LicenseSavingsReport.ps1
  • Public\Get-UnderutilizedLicenses.ps1
  • Public\Invoke-LicenseOptimization.ps1
  • README.md
  • Samples\sample-report.html
  • Tests\M365-LicenseOptimizer.Tests.ps1

Version History

Version Downloads Last updated
1.0.0 (current version) 3 2/16/2026