Private/Get-W365CloudPCSummary.ps1

function Get-W365CloudPCSummary {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [object[]]$AllItems,

        [Parameter(Mandatory)]
        [object[]]$VisibleItems,

        [string]$Filter,

        [int]$SelectedIndex
    )

    begin { }

    process {
        $typeSummary = @(
            $AllItems |
                Group-Object -Property ProvisioningType |
                Sort-Object Name |
                ForEach-Object { '{0}: {1}' -f $(if ($_.Name) { $_.Name } else { 'Unknown' }), $_.Count }
        ) -join ' | '

        $statusSummary = @(
            $AllItems |
                Group-Object -Property ProvisioningStatus |
                Sort-Object Name |
                ForEach-Object { '{0}: {1}' -f $(if ($_.Name) { $_.Name } else { 'Unknown' }), $_.Count }
        ) -join ' | '

        @(
            "Total: $($AllItems.Count) | Visible: $($VisibleItems.Count) | Selected: $([math]::Min($SelectedIndex + 1, [math]::Max($VisibleItems.Count, 1)))"
            "Types: $typeSummary"
            "Status: $statusSummary"
            $(if ($Filter) { "Search: $Filter" } else { 'Search: none' })
        )
    }

    end { }
}