source/03_SharePointOnline/Get-SharePointSiteUsageSummary.ps1

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

    $null = SetM365ReportDate -ReportPeriod $ReportPeriod

    try {
        $uri = "https://graph.microsoft.com/beta/reports/getSharePointSiteUsageDetail(period='D$($ReportPeriod)')"
        $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
        $result | Add-Member -MemberType ScriptProperty -Name LastActivityDate -Value { [datetime]$this."Last Activity Date" }
        [PSCustomObject]@{
            'Report Refresh Date'       = $result[0].'Report Refresh Date'
            'Total SharePoint Sites'    = ($result | Where-Object { $_.'Is Deleted' -eq $false }).Count
            'Active SharePoint Sites'   = ($result | Where-Object { $_.LastActivityDate -ge $Script:GraphStartDate -and $_.'Is Deleted' -eq $false }).Count
            'Inactive SharePoint Sites' = ($result | Where-Object { $_.LastActivityDate -lt $Script:GraphStartDate }).Count
            'Deleted SharePoint Sites'  = ($result | Where-Object { $_.'Is Deleted' -eq $true }).Count
            'Report Period'             = $ReportPeriod
            'Start Date'                = ($Script:GraphStartDate).ToString('yyyy-MM-dd')
            'End Date'                  = ($Script:GraphEndDate).ToString('yyyy-MM-dd')
        }
    }
    catch {
        SayError $_.Exception.Message
        return $null
    }
}