Collectors/MfaRegistration.ps1

@{
    Name           = 'MfaRegistration'
    FileName       = 'mfaRegistration'
    ApiVersion     = 'v1.0'
    RequiredScopes = @('AuditLog.Read.All')
    Description    = 'MFA registration state per user from the authentication methods report (requires Entra ID P1).'
    Collect        = {
        $details = @(Invoke-TLGraphRequest -Uri '/v1.0/reports/authenticationMethods/userRegistrationDetails?$top=999' -All)

        $total = @($details).Count
        $registered = @($details | Where-Object { $_.isMfaRegistered }).Count
        $capable = @($details | Where-Object { $_.isMfaCapable }).Count
        $admins = @($details | Where-Object { $_.isAdmin })
        $adminsUnregistered = @($admins | Where-Object { -not $_.isMfaRegistered }).Count
        $registeredPercent = 0.0
        if ($total -gt 0) { $registeredPercent = [Math]::Round(100.0 * $registered / $total, 1) }

        @{
            summary = [ordered]@{
                totalUsers             = $total
                mfaRegistered          = $registered
                mfaCapable             = $capable
                registeredPercent      = $registeredPercent
                adminCount             = @($admins).Count
                adminsWithoutMfa       = $adminsUnregistered
            }
            users   = $details
        }
    }
}