EmailDnsAudit.psm1

function Invoke-EmailDnsAudit {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $false)]
        [string]$InputFile,

        [Parameter(Mandatory = $false)]
        [string[]]$DomainInput,

        [Parameter(Mandatory = $false)]
        [string]$OutputCsv,

        [Parameter(Mandatory = $false)]
        [string]$OutputHtml,

        [Parameter(Mandatory = $false)]
        [string]$OutputJson,

        [Parameter(Mandatory = $false)]
        [switch]$ShowAll,

        [Parameter(Mandatory = $false)]
        [switch]$PromptForFile,

        [Parameter(Mandatory = $false)]
        [switch]$UseExchangeAcceptedDomains,

        [Parameter(Mandatory = $false)]
        [string]$ExchangeOrganization,

        [Parameter(Mandatory = $false)]
        [bool]$ExcludeOnMicrosoftDomains = $true,

        [Parameter(Mandatory = $false)]
        [string[]]$DkimSelectors,

        [Parameter(Mandatory = $false)]
        [string]$DnsServer,

        [Parameter(Mandatory = $false)]
        [ValidateRange(1, 30)]
        [int]$TimeoutSeconds = 5,

        [Parameter(Mandatory = $false)]
        [bool]$ShowProgress = $true,

        [Parameter(Mandatory = $false)]
        [string]$DeveloperName = 'Muataz Awad',

        [Parameter(Mandatory = $false)]
        [switch]$FilterMxNotMicrosoft,

        [Parameter(Mandatory = $false)]
        [switch]$FilterMissingAnyCore,

        [Parameter(Mandatory = $false)]
        [switch]$FilterMissingAllCore,

        [Parameter(Mandatory = $false)]
        [ValidateSet('MX', 'SPF', 'DMARC', 'DKIM')]
        [string[]]$FilterMissingAnyOf,

        [Parameter(Mandatory = $false)]
        [ValidateSet('MX', 'SPF', 'DMARC', 'DKIM')]
        [string[]]$FilterMissingAllOf,

        [Parameter(Mandatory = $false)]
        [switch]$NoOpenHtml
    )

    $scriptPath = Join-Path -Path $PSScriptRoot -ChildPath 'EmailDnsAudit.ps1'
    if (-not (Test-Path -Path $scriptPath)) {
        throw "Implementation script not found: $scriptPath"
    }

    & $scriptPath @PSBoundParameters
}

Export-ModuleMember -Function 'Invoke-EmailDnsAudit'