source/05_Teams/Get-TeamsDeviceUsageDistributionSummary.ps1

Function Get-TeamsDeviceUsageDistributionSummary {
    [CmdletBinding()]
    param (
        [Parameter()]
        [ValidateSet(7, 30, 90, 180)]
        [int]
        $ReportPeriod = 7,

        [Parameter()]
        [Switch]
        $IncludeNonLicensedUser
    )

    $ProgressPreference = 'SilentlyContinue'

    $uri = "https://graph.microsoft.com/beta/reports/getTeamsDeviceUsageDistributionUserCounts(period='D$($ReportPeriod)')"
    if ($IncludeNonLicensedUser) {
        $uri = "https://graph.microsoft.com/beta/reports/getTeamsDeviceUsageDistributionTotalUserCounts(period='D$($ReportPeriod)')"
    }

    try {
        $outFile = Get-OutputFileName $uri -ErrorAction Stop
        Invoke-MgGraphRequest -Method Get -Uri $uri -ContentType 'application/json' -ErrorAction Stop -OutputFilePath $outFile
        $result = Get-Content $outFile | ConvertFrom-Csv
        return $result
    }
    catch {
        SayError $_.Exception.Message
        return $null
    }
}