Public/Show-Office365Modules.ps1

function Show-Office365Modules {
    param(
        [switch]$AllowPrerelease
    )

    $local:Functions= Get-Office365ModuleInfo
    if ($PSBoundParameters.ContainsKey('AllowPrerelease')) {
        $script:myOffice365Services['AllowPrerelease'] = $AllowPrerelease.IsPresent
    }

    ForEach ( $local:Item in $local:Functions) {

        # Use Get-Module directly for RepositorySourceLocation check (PSResourceInfo lacks this property)
        $local:Module= Get-Module -Name ('{0}' -f $local:Item.Module) -ListAvailable | Sort-Object -Property Version -Descending
        $local:Module= $local:Module | Where-Object { $_.RepositorySourceLocation -and ([System.Uri]($_.RepositorySourceLocation)).Authority -ieq ([System.Uri]($local:Item.Repo)).Authority } | Select-Object -First 1

        If( $local:Module) {

            $local:Version = Get-ModuleVersionInfo -Module $local:Module
            Write-Host ('{0}: Local v{1}' -f $local:Item.Description, $Local:Version) -NoNewline
            $OnlineModule = Find-myModule -Name $local:Item.Module -ErrorAction SilentlyContinue

            If( $OnlineModule) {
                Write-Host (', Online v{0}' -f $OnlineModule.version) -NoNewline
            }
            Else {
                Write-Host (', Online N/A') -NoNewline
            }
            Write-Host (', Scope:{0} Status:' -f (Get-ModuleScope -Module $local:Module)) -NoNewline

            If( [string]::IsNullOrEmpty( $local:Version) -or [string]::IsNullOrEmpty( $OnlineModule.version)) {
                Write-Host ('Unknown')
            }
            Else {
                If( (Compare-TextVersionNumber -Version $local:Version -CompareTo $OnlineModule.version) -eq 1) {
                    Write-Host ('Outdated') -ForegroundColor Red
                }
                Else {
                    Write-Host ('OK') -ForegroundColor Green
                }
            }
            If( $local:Item.ReplacedBy) {
                Write-Warning ('{0} has been replaced by {1}' -f $local:Item.Module, $local:Item.ReplacedBy)
            }
        }
        Else {
            Write-Host ('{0} not found ({1})' -f $local:Item.Description, $local:Item.Repo) -ForegroundColor DarkGray
        }
    }
}