Private/Get-OnlineModuleVersion.ps1

function Get-OnlineModuleVersion {
    <#
    .SYNOPSIS
    Returns the latest online version string for a module, using a 60-minute
    in-session cache to avoid redundant PSGallery round-trips.
    The cache ($script:myOffice365Services['OnlineVersionCache']) is pre-populated
    in parallel by Show-Office365Modules and Update-Office365Modules (PS 7+).
    #>

    param(
        [Parameter(Mandatory=$true)]
        [string]$Name,
        [int]$MaxAgeMinutes = 60
    )
    $local:cache = $script:myOffice365Services['OnlineVersionCache']
    $local:entry = $local:cache[$Name]
    if ($null -ne $local:entry -and ([datetime]::Now - $local:entry.Fetched).TotalMinutes -lt $MaxAgeMinutes) {
        return $local:entry.Version
    }
    $local:online = Find-myModule -Name $Name -ErrorAction SilentlyContinue
    $local:ver    = if ($local:online) { [string]$local:online.Version } else { $null }
    $local:cache[$Name] = [PSCustomObject]@{ Version = $local:ver; Fetched = [datetime]::Now }
    return $local:ver
}