Optera.LicenseReclaim.psd1
|
@{ RootModule = 'Optera.LicenseReclaim.psm1' ModuleVersion = '0.2.1' GUID = '57c72729-b254-4b9f-820a-b18715f99812' Author = 'Optera AI' CompanyName = 'Optera AI LLC' Copyright = '(c) 2026 Optera AI LLC. All rights reserved.' Description = 'Surfaces Microsoft 365 licenses you can reclaim - still assigned to disabled or stale on-premises Active Directory accounts - and reports the monthly dollars wasted. Read-only; the scan runs entirely inside your network. Hybrid (Entra Connect synced) tenants.' PowerShellVersion = '5.1' # Lean dependency footprint - no full Graph SDK, no RSAT ActiveDirectory module. # AD is read via .NET DirectorySearcher; Graph via Invoke-MgGraphRequest. # # Microsoft.Graph.Authentication is NOT declared in RequiredModules on purpose: a hard # requirement forces it to load at import time, which would break offline-fixture runs and CI # on machines without it installed. It is checked at runtime in Connect-ReclaimGraph instead. # It is also intentionally NOT listed in ExternalModuleDependencies: PowerShellGet requires any # module named there to also appear in RequiredModules/NestedModules, which would defeat the # lazy-load design. Connect-ReclaimGraph tells the user to Install-Module it when needed. FunctionsToExport = @( 'Invoke-OpteraLicenseScan', 'Get-OpteraReclaimableLicense', 'Unlock-OpteraLicenseReclaim' ) CmdletsToExport = @() VariablesToExport = @() AliasesToExport = @() FileList = @( 'Optera.LicenseReclaim.psm1', 'src/Data/sku-pricelist.json' ) PrivateData = @{ PSData = @{ Tags = @( 'M365', 'Microsoft365', 'Office365', 'License', 'Licensing', 'FinOps', 'ActiveDirectory', 'Entra', 'Graph', 'Reporting', 'Audit', 'Unused', 'Inactive', 'CostOptimization', 'Windows' ) ProjectUri = 'https://opteraai.com/products' LicenseUri = 'https://opteraai.com/terms' ReleaseNotes = '0.2.1: documentation and packaging metadata update; no functional change. 0.2.0: correlation accuracy - a SID-first match ladder (anchor-agnostic, resolving an ms-DS-ConsistencyGuid undercount), grace for never-logged-on accounts, -ExcludeOu to suppress intentionally-licensed OUs, and the report reframed as review candidates with accuracy caveats. Public cmdlets: Invoke-OpteraLicenseScan, Get-OpteraReclaimableLicense, Unlock-OpteraLicenseReclaim. 0.1.2: fix the per-account Domain field (blank under -Forest). 0.1.1: -Forest multi-domain scanning. 0.1.0: initial read-only hybrid AD / Microsoft 365 license-reclaim scan.' } } } |