Public/Test-ModuleAvailability.ps1

function Test-ModuleAvailability {
    <#
    .SYNOPSIS
        Tests if a module is available and can be loaded.
    .PARAMETER ModuleName
        Name of the module to test.
    .OUTPUTS
        Boolean indicating if module is available.
    #>

    param(
        [Parameter(Mandatory = $true)]
        [string]$ModuleName
    )
    
    try {
        # Check if module is already loaded
        if (Get-Module -Name $ModuleName -ErrorAction SilentlyContinue) {
            return $true
        }
        
        # Check if module is available
        if (Get-Module -ListAvailable -Name $ModuleName -ErrorAction SilentlyContinue) {
            return $true
        }
        
        return $false
    }
    catch {
        return $false
    }
}