365TUNE.psd1

@{
    ModuleVersion     = "2.3.4"
    GUID              = "7c9c4650-e980-44ca-8092-50e0ae0ec9bc"
    Author            = "Metawise Consulting LLC"
    CompanyName       = "Metawise Consulting LLC"
    Copyright         = "(c) 2025 Metawise Consulting LLC. All rights reserved."
    Description       = "365TUNE PowerShell toolkit for Microsoft 365 license optimization, security compliance, cost reporting, and Azure permissions management."
    RootModule        = "365TUNE.psm1"
    FunctionsToExport = @(
        "Invoke-365TUNEConnectAll",
        "Invoke-365TUNERevokeAll",
        "Invoke-365TuneConnectAzure",
        "Invoke-365TuneRevokeAzure",
        "Invoke-365TuneConnectExchange",
        "Invoke-365TuneRevokeExchange",
        "Invoke-365TuneConnectTeams",
        "Invoke-365TuneRevokeTeams",
        "Invoke-365TuneTestAzure",
        "Invoke-365TuneTestExchange",
        "Invoke-365TuneTestTeams",
        "Invoke-365TUNETestAll"
    )
    CmdletsToExport   = @()
    AliasesToExport   = @()
    VariablesToExport = @()
    PrivateData       = @{
        PSData = @{
            Tags         = @("Azure","Microsoft365","M365","MSP","Licensing","Security","Compliance","CIS","Entra","GDAP","ExchangeOnline","365TUNE")
            ProjectUri   = "https://365tune.com"
            LicenseUri   = "https://365tune.com/Gallerylicense"
            ReleaseNotes = @"
v2.3.4 (production release)
- Full Azure, Exchange Online, and Teams permission management
- Azure: Reader at / and /providers/Microsoft.aadiam via elevation/de-elevation
- Exchange: View-Only Configuration role via Exchange Online Management module
- Teams: Teams Reader Entra ID role via Graph REST API
- Test functions: Invoke-365TuneTestAzure/Exchange/Teams + Invoke-365TUNETestAll
- Cloud Shell MSI authentication supported across all functions
- Graph REST API used for SP lookup (no Az.MSGraph dependency)
- try/finally guarantees elevation cleanup even on error
- JWT OID decode for MSI-compatible elevation removal
"@

        }
    }
}