Skip to content

Reporting and monitoring

Intune has plenty of data. The trick is knowing which view answers which question, how fresh it is, and when to take it somewhere else for history and alerting.

Where reports live

Need Where Freshness
State of one device right now Device page in Devices > All devices Near real time, as of last check-in
Status of one policy or app The policy or app's Monitor and device status views Near real time
Fleet-wide compliance, configuration, apps, updates Reports > Device management Generated on demand, minutes old
User experience: startup times, app crashes, readiness Reports > Endpoint analytics Daily
Live device inventory, battery health, anomalies Advanced Analytics (device query, device timeline) Near real time
History, trends, alerts and SIEM Log Analytics through Reports > Diagnostic settings Audit logs immediately; compliance and device inventory daily
Who changed what Tenant administration > Audit logs Immediate

Reports lag behind devices

A device may have applied a setting minutes before the portal shows it. Before you troubleshoot a "Pending" status, sync the device and wait for the next report refresh.

Endpoint analytics

Endpoint analytics scores the user experience on Windows devices:

  • Startup performance: boot and sign-in times, and the processes slowing them down.
  • Application reliability: which apps crash most, by app, model and OS version.
  • Work from anywhere: readiness for cloud management, cloud identity, cloud provisioning and Windows 11.
  • Remediations: the script packages that detect and fix issues.

Devices need to be enrolled in endpoint analytics, which Intune handles with a data collection policy when you turn it on.

Advanced Analytics and device query

Advanced Analytics is included in Intune Plan 2, the Intune Suite, and Microsoft 365 E3 and E5 from July 2026. It adds battery health, resource performance and anomaly reports, a device timeline, and device query, which lets you run KQL against live inventory.

Open a Windows device, then Device query under Monitor. Use it to check things that would otherwise need a remote session: a running service, a registry value, an app version, top processes. You can run device actions straight from the results.

Go to Devices > Device query. It covers corporate-owned Windows, macOS, iOS/iPadOS and Android Enterprise corporate devices. Windows devices need a properties catalog policy to collect the inventory.

Limits to know: up to three join operators per query, about 50,000 rows per result, 10 queries a minute and 1,000 a month. You can export up to 50,000 rows to CSV, or add the results straight to an Entra security group.

Example queries for multiple devices:

Devices with unprotected volumes
EncryptableVolume
| where ProtectionStatus != "PROTECTED"
| join LogicalDrive on Device
Device count by OS version
OsVersion
| summarize DeviceCount = count() by OsVersion
| order by DeviceCount desc
Devices with less than 8 GB of RAM
MemoryInfo
| where PhysicalMemoryTotalBytes < 8000000000
| project Device, PhysicalMemoryGB = PhysicalMemoryTotalBytes / (1000 * 1000 * 1000)
| order by PhysicalMemoryGB asc
Batteries below 70% of design capacity
Battery
| project Device, Model, CycleCount,
          HealthPercent = (FullChargedCapacity * 100) / DesignedCapacity
| where HealthPercent < 70
| order by HealthPercent asc
TPM present but not enabled
Tpm
| where Enabled != true

Device query supports a subset of KQL: where, project, summarize, join, order by, top, take, count and distinct, plus common scalar and aggregation functions. Refer to device properties with Device.<Property>, for example Device.SerialNumber. Copilot in Intune can write device queries from plain-language questions if you have Security Copilot.

Log Analytics

Send Intune data to a Log Analytics workspace under Reports > Diagnostic settings (needs an Azure subscription). You get history beyond the portal, alerting, workbooks, and a path to your SIEM through Event Hubs.

Table Contains Latency
IntuneAuditLogs Every admin change: creates, edits, deletes, assignments, remote actions Sent immediately
IntuneOperationalLogs Enrollment successes and failures, noncompliance details Sent immediately
IntuneDeviceComplianceOrg Organizational compliance report, one row per device per export Once every 24 hours, up to 48 hours
IntuneDevices Device inventory and status Once every 24 hours, up to 48 hours

Column names and values can change. When a query doesn't return what you expect, run TableName | getschema or TableName | take 5 and adjust.

Current noncompliant devices
let Lookback = 2d;
IntuneDeviceComplianceOrg
| where TimeGenerated >= ago(Lookback)
| summarize arg_max(TimeGenerated, *) by DeviceId
| where ComplianceState != "Compliant"
| project DeviceName, UPN, OS, OSVersion, ComplianceState, InGracePeriodUntil, LastContact
| order by DeviceName asc
Destructive device actions in the last 7 days
let Lookback = 7d;
IntuneAuditLogs
| where TimeGenerated >= ago(Lookback)
| where OperationName has_any ("wipe", "retire", "delete")
| project TimeGenerated, OperationName, Identity, ResultType, Properties
| order by TimeGenerated desc
Admin changes per person and category
let Lookback = 30d;
IntuneAuditLogs
| where TimeGenerated >= ago(Lookback)
| summarize Changes = count() by Identity, Category
| order by Changes desc

Turn the second query into an alert rule that fires when more than a handful of wipes happen in an hour. It's a cheap early warning for a compromised admin account.

Exporting reports with Graph

Most reports in the admin center can be exported with the exportJobs API: create a job, poll it until its status is completed, then download the zipped CSV from the returned url. Always name the columns you want with select, because default columns can change. See the example in Automation with Graph.

Audit logs

Tenant administration > Audit logs records who did what, when, and from which app. Filter by category (for example Device, Compliance, Role) or activity. For long-term retention and alerting, send them to Log Analytics as shown above.

Learn more