Private/Get-W365CloudAppData.ps1

function Get-W365CloudAppData {
    [CmdletBinding()]
    param(
        [ValidateSet('All','Ready','Failed')]
        [string]$Status = 'All'
    )

    begin {
        Import-W365CliWindowsCloudPC
        Connect-CloudPC | Out-Null
    }

    process {
        $baseUri = 'https://graph.microsoft.com/beta/deviceManagement/virtualEndpoint/cloudApps'
        $query = [System.Collections.Generic.List[string]]::new()
        $query.Add('$top=100')
        $query.Add('$count=true')

        switch ($Status) {
            'Ready' {
                $query.Add('$orderBy=addedDateTime desc')
                $query.Add('$filter=appStatus eq ''ready''')
                $query.Add('$select=*')
            }
            'Failed' {
                $query.Add('$orderBy=addedDateTime desc')
                $query.Add('$filter=appStatus eq ''failed''')
                $query.Add('$select=*')
            }
            default {
                $query.Add('$orderBy=lastPublishedDateTime desc')
                $query.Add('$select=*')
            }
        }

        $uri = "$baseUri`?$($query -join '&')"
        do {
            $response = Invoke-MgGraphRequest -Method GET -Uri $uri -Headers @{ ConsistencyLevel = 'eventual' }
            foreach ($app in @($response.value)) {
                $displayName = if ($app.displayName) {
                    $app.displayName
                }
                elseif ($app.appName) {
                    $app.appName
                }
                elseif ($app.discoveredAppName) {
                    $app.discoveredAppName
                }
                else {
                    $app.id
                }

                [pscustomobject]@{
                    PSTypeName            = 'W365CLI.CloudApp'
                    Id                    = $app.id
                    DisplayName           = $displayName
                    AppStatus             = $app.appStatus
                    AppType               = $app.appType
                    Description           = $app.description
                    Publisher             = $app.publisher
                    Version               = $app.version
                    DiscoveredAppName     = $app.discoveredAppName
                    AddedDateTime         = if ($app.addedDateTime) { ([datetime]$app.addedDateTime).ToLocalTime() } else { $null }
                    LastPublishedDateTime = if ($app.lastPublishedDateTime) { ([datetime]$app.lastPublishedDateTime).ToLocalTime() } else { $null }
                    Raw                   = $app
                }
            }

            $uri = $response.'@odata.nextLink'
        } while ($uri)
    }

    end { }
}