PSKB4Reporting.psm1

$script:ModuleRoot = $PSScriptRoot
$script:KB4ReportingContext = $null
$script:KB4LastRequestAt = $null
# Internal test hook used by Pester to avoid live HTTP in unit tests.
$script:KB4InvokeRestMethodOverride = $null

$script:KB4PublicFunctions = @(
    'Connect-KB4Reporting',
    'Disconnect-KB4Reporting',
    'Get-KB4ReportingContext',
    'Get-KB4Account',
    'Get-KB4AccountRiskScoreHistory',
    'Get-KB4User',
    'Get-KB4UserRiskScoreHistory',
    'Get-KB4Group',
    'Get-KB4GroupMember',
    'Get-KB4GroupRiskScoreHistory',
    'Get-KB4PhishingCampaign',
    'Get-KB4PhishingSecurityTest',
    'Get-KB4PhishingRecipient',
    'Get-KB4TrainingStorePurchase',
    'Get-KB4TrainingPolicy',
    'Get-KB4TrainingCampaign',
    'Get-KB4TrainingEnrollment'
)

foreach ($folder in 'Private', 'Public')
{
    $path = Join-Path -Path $script:ModuleRoot -ChildPath $folder
    if (Test-Path -LiteralPath $path)
    {
        # Public functions are organized in nested folders, so load recursively.
        Get-ChildItem -Path $path -Filter '*.ps1' -File -Recurse |
            ForEach-Object `
            {
                . $_.FullName
            }
    }
}

Export-ModuleMember -Function $script:KB4PublicFunctions