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 @() } } |