private/Test-ModuleVersion.ps1

function Test-ModuleVersion {
    process {
        $name = $MyInvocation.MyCommand.Module
        Write-Verbose "Current Module Name is '$name'"
        $installedVersion = (get-installedmodule -Name Smtp4Dev4BcContainers -ErrorAction "SilentContinoue" | Sort-Object -Property Version | Select-Object -Last 1).Version #$MyInvocation.MyCommand.Module.Version does not work while module loading
        Write-Verbose "Current Module Version is '$installedVersion'"
        if (-not $installedVersion) {
            #Module is not installed
            return $true
        }
        $Response = Invoke-WebRequest -Uri "https://www.powershellgallery.com/api/v2/Packages?`$filter=Id eq '$name' and IsLatestVersion"
        $OnlineVersion = ([xml]($Response.Content)).feed.entry.properties.Version
        Write-Verbose "Online Module Version is '$OnlineVersion'"
        if ([Version]::new($OnlineVersion) -gt $installedVersion) {
            Write-Warning "You are not using the latest version of $name. Your Version is $installedVersion, available is $OnlineVersion."
            return $false
        }
        return $true

    }
}