Workloads/Get-OneDriveUsage.ps1

# Get-OneDriveUsage.ps1
# Collects 30-day OneDrive activity via the Graph Reports API.
# Part of the M365-QuickAssess module -- not exported.

function Get-OneDriveUsage
{
    param
    (
        $Assessment
    )

    Write-Log "Collecting OneDrive activity data (30 days)"

    try
    {
        $od = Get-GraphReportCsv `
            -Uri "https://graph.microsoft.com/v1.0/reports/getOneDriveUsageAccountDetail(period='D30')"

        if ( -not $od -or $od.Count -eq 0 )
        {
            Write-Log "OneDrive activity report returned no data" "WARN"
            $Assessment.OneDrive.ActiveOneDriveCount = $null
            return
        }

        $activeCount = ( $od | Where-Object { $_."Last Activity Date" } ).Count

        $Assessment.OneDrive.ActiveOneDriveCount = $activeCount

        Write-Log "OneDrive (30 days): Active=$activeCount"
    }
    catch
    {
        Write-Log "OneDrive activity collection failed: $( $_.Exception.Message )" "ERROR"
    }
}