M365-Assess.psd1

@{
    # Module manifest for M365-Assess
    # Generated: 2026-03-08

    RootModule        = 'M365-Assess.psm1'
    ModuleVersion     = '1.5.0'
    GUID              = 'f7e3b2a1-4c5d-6e8f-9a0b-1c2d3e4f5a6b'
    Author            = 'Galvnyz'
    CompanyName       = 'Community'
    Copyright         = '(c) 2026 Galvnyz. All rights reserved.'
    Description       = 'Comprehensive read-only Microsoft 365 security assessment tool for IT consultants and administrators. Covers Entra ID, Exchange Online, Intune, Defender, SharePoint, Teams, Purview, and Active Directory.'

    # Minimum PowerShell version
    PowerShellVersion = '7.0'

    # Required modules (must be installed before running)
    # Known compatible: Graph SDK 2.25+ with EXO 3.7.x
    # EXO 3.8.0+ has MSAL conflicts with Graph SDK 2.x -- do not use
    # EXO excluded from RequiredModules because ModuleVersion only supports minimum,
    # and we need a ceiling (< 3.8.0). The orchestrator handles EXO gating at runtime.
    RequiredModules   = @(
        @{ ModuleName = 'Microsoft.Graph.Authentication';               ModuleVersion = '2.25.0' }
        @{ ModuleName = 'Microsoft.Graph.Applications';                 ModuleVersion = '2.25.0' }
        @{ ModuleName = 'Microsoft.Graph.DeviceManagement';             ModuleVersion = '2.25.0' }
        @{ ModuleName = 'Microsoft.Graph.Identity.DirectoryManagement'; ModuleVersion = '2.25.0' }
        @{ ModuleName = 'Microsoft.Graph.Identity.SignIns';             ModuleVersion = '2.25.0' }
        @{ ModuleName = 'Microsoft.Graph.Reports';                      ModuleVersion = '2.25.0' }
        @{ ModuleName = 'Microsoft.Graph.Security';                     ModuleVersion = '2.25.0' }
        @{ ModuleName = 'Microsoft.Graph.Users';                        ModuleVersion = '2.25.0' }
    )

    # Functions to export from this module
    FunctionsToExport = @(
        'Invoke-M365Assessment'
        'Get-M365ExoSecurityConfig'
        'Get-M365DnsSecurityConfig'
        'Get-M365EntraSecurityConfig'
        'Get-M365CASecurityConfig'
        'Get-M365EntAppSecurityConfig'
        'Get-M365IntuneSecurityConfig'
        'Get-M365DefenderSecurityConfig'
        'Get-M365ComplianceSecurityConfig'
        'Get-M365SharePointSecurityConfig'
        'Get-M365TeamsSecurityConfig'
        'Get-M365FormsSecurityConfig'
        'Get-M365PowerBISecurityConfig'
        'Get-M365PurviewRetentionConfig'
        'Grant-M365AssessConsent'
    )
    CmdletsToExport   = @()
    VariablesToExport = @()
    AliasesToExport   = @()

    # Scripts included in this module
    ScriptsToProcess  = @()

    # Files included in this module package
    FileList          = @(
        'M365-Assess.psm1'
        'Invoke-M365Assessment.ps1'
        'Orchestrator\Show-InteractiveWizard.ps1'
        'Orchestrator\Resolve-M365Environment.ps1'
        'Orchestrator\AssessmentHelpers.ps1'
        'Orchestrator\AssessmentMaps.ps1'
        'Orchestrator\Test-ModuleCompatibility.ps1'
        'Orchestrator\Connect-RequiredService.ps1'
        'Orchestrator\Test-BlockedScripts.ps1'
        'Orchestrator\Test-GraphPermissions.ps1'
        'Orchestrator\Invoke-DnsAuthentication.ps1'
        'Common\SecurityConfigHelper.ps1'
        'Common\Connect-Service.ps1'
        'Common\Resolve-DnsRecord.ps1'
        'Common\Resolve-TenantLicenses.ps1'
        'Common\Export-AssessmentReport.ps1'
        'Common\ReportHelpers.ps1'
        'Common\Build-SectionHtml.ps1'
        'Common\Get-ReportTemplate.ps1'
        'Common\Export-ComplianceMatrix.ps1'
        'Common\Export-ComplianceOverview.ps1'
        'Common\Export-FrameworkCatalog.ps1'
        'Common\Import-ControlRegistry.ps1'
        'Common\Import-FrameworkDefinitions.ps1'
        'Common\Show-CheckProgress.ps1'
        'Entra\Get-TenantInfo.ps1'
        'Entra\Get-UserSummary.ps1'
        'Entra\Get-MfaReport.ps1'
        'Entra\Get-AdminRoleReport.ps1'
        'Entra\Get-ConditionalAccessReport.ps1'
        'Entra\Get-AppRegistrationReport.ps1'
        'Entra\Get-PasswordPolicyReport.ps1'
        'Entra\Get-EntraSecurityConfig.ps1'
        'Entra\EntraHelpers.ps1'
        'Entra\EntraPasswordAuthChecks.ps1'
        'Entra\EntraAdminRoleChecks.ps1'
        'Entra\EntraConditionalAccessChecks.ps1'
        'Entra\EntraUserGroupChecks.ps1'
        'Entra\Get-CASecurityConfig.ps1'
        'Entra\Get-EntAppSecurityConfig.ps1'
        'Entra\Get-LicenseReport.ps1'
        'Entra\Get-InactiveUsers.ps1'
        'Exchange-Online\Get-MailboxSummary.ps1'
        'Exchange-Online\Get-MailFlowReport.ps1'
        'Exchange-Online\Get-EmailSecurityReport.ps1'
        'Exchange-Online\Get-ExoSecurityConfig.ps1'
        'Exchange-Online\Get-DnsSecurityConfig.ps1'
        'Exchange-Online\Get-MailboxPermissionReport.ps1'
        'Intune\Get-DeviceSummary.ps1'
        'Intune\Get-CompliancePolicyReport.ps1'
        'Intune\Get-ConfigProfileReport.ps1'
        'Intune\Get-DeviceComplianceReport.ps1'
        'Intune\Get-IntuneSecurityConfig.ps1'
        'Security\Get-SecureScoreReport.ps1'
        'Security\Get-DefenderPolicyReport.ps1'
        'Security\Get-DefenderSecurityConfig.ps1'
        'Security\DefenderHelpers.ps1'
        'Security\DefenderAntiPhishingChecks.ps1'
        'Security\DefenderAntiSpamChecks.ps1'
        'Security\DefenderAntiMalwareChecks.ps1'
        'Security\DefenderSafeAttLinksChecks.ps1'
        'Security\DefenderPresetZapChecks.ps1'
        'Security\Get-DlpPolicyReport.ps1'
        'Security\Get-ComplianceSecurityConfig.ps1'
        'Security\Get-StrykerIncidentReadiness.ps1'
        'Security\Get-LocalAdmins.ps1'
        'Collaboration\Get-SharePointOneDriveReport.ps1'
        'Collaboration\Get-SharePointSecurityConfig.ps1'
        'Collaboration\Get-TeamsAccessReport.ps1'
        'Collaboration\Get-TeamsSecurityConfig.ps1'
        'Collaboration\Get-FormsSecurityConfig.ps1'
        'ActiveDirectory\Get-HybridSyncReport.ps1'
        'ActiveDirectory\Get-ADDomainReport.ps1'
        'ActiveDirectory\Get-ADDCHealthReport.ps1'
        'ActiveDirectory\Get-ADReplicationReport.ps1'
        'ActiveDirectory\Get-ADSecurityReport.ps1'
        'ActiveDirectory\Get-StaleComputers.ps1'
        'Inventory\Get-MailboxInventory.ps1'
        'Inventory\Get-GroupInventory.ps1'
        'Inventory\Get-TeamsInventory.ps1'
        'Inventory\Get-SharePointInventory.ps1'
        'Inventory\Get-OneDriveInventory.ps1'
        'PowerBI\Get-PowerBISecurityConfig.ps1'
        'Purview\Get-AuditRetentionReport.ps1'
        'Purview\Get-PurviewRetentionConfig.ps1'
        'Purview\Search-AuditLog.ps1'
        'SOC2\Get-SOC2SecurityControls.ps1'
        'SOC2\Get-SOC2ConfidentialityControls.ps1'
        'SOC2\Get-SOC2AuditEvidence.ps1'
        'SOC2\Get-SOC2ReadinessChecklist.ps1'
        'Networking\Test-PortConnectivity.ps1'
        'Windows\Get-InstalledSoftware.ps1'
        'controls\role-tiers.json'
        'controls\registry.json'
        'controls\risk-severity.json'
        'controls\mitre-technique-map.json'
        'controls\frameworks\cis-controls-v8.json'
        'controls\frameworks\cis-m365-v6.json'
        'controls\frameworks\cisa-scuba.json'
        'controls\frameworks\cmmc.json'
        'controls\frameworks\essential-eight.json'
        'controls\frameworks\fedramp.json'
        'controls\frameworks\hipaa.json'
        'controls\frameworks\iso-27001.json'
        'controls\frameworks\mitre-attack.json'
        'controls\frameworks\nist-800-53-r5.json'
        'controls\frameworks\nist-csf.json'
        'controls\frameworks\pci-dss-v4.json'
        'controls\frameworks\soc2-tsc.json'
        'controls\frameworks\stig.json'
        'Setup\Grant-M365AssessConsent.ps1'
        'Setup\PermissionDefinitions.ps1'
        'assets\m365-assess-bg.png'
        'assets\m365-assess-logo-white.png'
        'assets\m365-assess-logo.png'
        'assets\sku-friendly-names.csv'
    )

    # Private data / PSData for PowerShell Gallery
    PrivateData       = @{
        PSData = @{
            Tags         = @('Microsoft365', 'M365', 'Security', 'Assessment', 'Compliance', 'Audit',
                             'EntraID', 'Exchange', 'Intune', 'Defender', 'SharePoint', 'Teams',
                             'PowerBI', 'CIS', 'NIST', 'SOC2', 'HIPAA', 'ZeroTrust', 'SecurityBaseline')
            LicenseUri   = 'https://github.com/Galvnyz/M365-Assess/blob/main/LICENSE'
            ProjectUri   = 'https://github.com/Galvnyz/M365-Assess'
            ReleaseNotes = 'v1.5.0 - Competitive feature parity: license-aware check gating, QuickScan mode, Security Defaults gap analysis, Fluent UI icons, tabbed email explainers, app security cluster'
        }
    }
}