Private/Utilities/Get-PIMModuleStatus.ps1

function Get-PIMModuleStatus {
    <#
    .SYNOPSIS
        Gets the current status of PIM module loading
     
    .DESCRIPTION
        Returns information about which modules are loaded and their versions
     
    .OUTPUTS
        PSCustomObject with module status information
    #>

    [CmdletBinding()]
    param()
    
    $status = [PSCustomObject]@{
        RequiredVersions = $script:RequiredModuleVersions
        LoadedModules    = [System.Collections.ArrayList]::new()
        LoadingState     = $script:ModuleLoadingState
        Compatible       = $false
    }
    
    foreach ($moduleName in $script:RequiredModuleVersions.Keys) {
        $loadedModule = Get-Module -Name $moduleName
        if ($loadedModule) {
            $null = $status.LoadedModules.Add([PSCustomObject]@{
                    Name             = $moduleName
                    LoadedVersion    = $loadedModule.Version
                    RequiredVersion  = $script:RequiredModuleVersions[$moduleName]
                    IsCorrectVersion = ($loadedModule.Version -eq $script:RequiredModuleVersions[$moduleName])
                })
        }
    }
    
    # Test compatibility if modules are loaded
    if ($status.LoadedModules.Count -gt 0) {
        $status.Compatible = Test-PIMModuleCompatibility
    }
    
    return $status
}