Private/Helper/Test-IntegrisModuleDependency.ps1

FUNCTION Test-IntegrisModuleDependency {

    [CmdletBinding()]
    PARAM (
        [Parameter(Mandatory)]
        [STRING[]]$Name,
        [VERSION]$MinimumVersion,
        [INT]$TryCount = 3
    )
    
    ### TLS 1.2 or 1.3
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls13

    ### Get Package Info to Check Version
    IF (!(Get-PackageProvider -Name Nuget -Force)) { 
        Find-PackageProvider -Name NuGet -Force | Install-PackageProvider -Force | Out-Null
        Register-PackageSource -Provider NuGet -Name nugetRepository -Location https://www.nuget.org/api/v2 -Force | Out-Null 
    }

    FOREACH ($Item in $Name) { 
        $Count = 0
        WHILE ((Get-Module $Item -ListAvailable).Version -lt (Find-Module $Item).Version -or (!(Get-Module $Item -ListAvailable)) -or (Get-Module $Item -ListAvailable).Version -lt $MinimumVersion ) {
            $Count++
            IF (!(Get-Module $Item -ListAvailable)) { 
                Install-Module $Item -Force 
            } 
            ELSE { 
                Update-Module $Item -Force 
                Remove-Module $Item -Force 
            } 
            Import-Module $Item -Force -WarningAction SilentlyContinue 

            IF ($Count -eq $TryCount) { 
                IF ($MinimumVersion) {
                    IF ([VERSION](Get-Module $Item).Version -ge [VERSION]$MinimumVersion) { RETURN $True }
                    ELSE { RETURN $False }
                }
                ELSE {
                    IF (Get-Module $Item) { RETURN $True }
                    ELSE { RETURN $False }
                }

                RETURN $False 
            }
        } 
    }

    RETURN $True
}