Private/Provider/Invoke-ProviderGetVersions.ps1

function Invoke-ProviderGetVersions {
    param(
        [string]$Name,
        [string]$Repository = 'PSGallery'
    )

    function Get-VersionSortKey {
        param($Version)
        $versionString = $Version.ToString()
        $semanticVersion = $null
        if ([System.Management.Automation.SemanticVersion]::TryParse($versionString, [ref]$semanticVersion)) {
            return $semanticVersion
        }
        return $versionString
    }

    $provider = Get-ModuleProvider

    try {
        Import-ActiveProvider -Provider $provider

        $raw = if ($provider -eq 'PSResourceGet') {
            Find-PSResource -Name $Name -Repository $Repository -Type Module -Version '*' -ErrorAction Stop
        } else {
            Find-Module -Name $Name -Repository $Repository -AllVersions -ErrorAction Stop
        }

        return $raw |
            Sort-Object -Property { Get-VersionSortKey $_.Version } -Descending |
            ForEach-Object { $_.Version.ToString() }
    } catch {
        Write-Error "Failed to retrieve versions for '$Name': $_"
        return @()
    }
}