๐ฑ Recipe ยท Intune & Device Management
Inventory Installed Software (Detected Apps) on a User's Intune-Managed Devices
Enumerate a user's Intune-managed devices and retrieve the detected applications inventory via the Microsoft Endpoint Manager admin center, Graph API, or PowerShell
Complexity
Intermediate
Impact
device-management + software-inventory + audit + help-desk + intune
Context
Why This Matters
Why this recipe exists
When supporting an end user โ during a help desk ticket, license reconciliation, software audit, or security incident โ administrators frequently need to know exactly what software is installed on that person's managed devices. Intune collects this data automatically from enrolled Windows, macOS, iOS, and Android devices and exposes it as the detectedApps collection on each managedDevice.
When to run it
- A user reports a problem with a specific application and you need to confirm the version installed.
- You are investigating whether a vulnerable or unauthorized piece of software is present on a user's endpoints.
- You are preparing for a hardware refresh, role change, or offboarding and want a full software footprint.
- You are validating that required line-of-business apps were successfully installed by Intune.
Important prerequisite
Reading Intune managed device data requires an account with an Intune-aware admin role (Intune Administrator, Global Reader, Helpdesk Operator, or equivalent). Simply granting the Graph scope DeviceManagementManagedDevices.Read.All is not sufficient โ the signed-in principal must also hold a role that grants read access in the Intune RBAC model. If both the scope and the role are not present, the /deviceManagement/managedDevices endpoints return 401/403 Forbidden.
Expected Outcomes
What you will have when you finish
- A confirmed list of the user's Intune-managed devices, including device ID, name, OS, model, last check-in, and compliance state.
- For each device, the full detected apps inventory โ display name, version, publisher, size, and device count.
- A consolidated, deduplicated software list suitable for pasting into a ticket, CSV export, or audit report.
- A reusable PowerShell script that can be re-run on any user by changing a single parameter.
Risks & Considerations
Things to watch out for
- Registered โ Managed.
/users/{id}/registeredDevicesreturns Entra ID device objects, which include BYOD and Workplace-Joined devices that may not be Intune-enrolled. Only devices that appear under/deviceManagement/managedDeviceswill have adetectedAppsinventory. - Detected apps is not real-time. Intune refreshes the inventory approximately every 7 days on Windows and at each check-in on mobile platforms. Recent installs or uninstalls may not appear immediately.
- Win32 vs. MSI scope. On Windows, detected apps reports Win32 apps registered under Add/Remove Programs. Per-user MSIX/AppX packages and portable executables are not included.
- Permission escalation.
DeviceManagementApps.Read.AllandDeviceManagementManagedDevices.Read.Allexpose tenant-wide software and hardware data. Grant only to principals that already have a matching Intune role; do not grant broadly to service principals without justification. - Privacy. In some jurisdictions, personal device software inventory may be regulated. Confirm your organization's BYOD and privacy policies before sharing the output with non-IT stakeholders.
Required Permissions
| Permission | Why It's Needed |
|---|---|
| User.Read.All | Resolve the user's object ID from their UPN or display name. |
| Directory.Read.All | Enumerate registered and owned devices via /users/{id}/registeredDevices. |
| DeviceManagementManagedDevices.Read.All | List Intune-managed devices and read per-device metadata. |
| DeviceManagementApps.Read.All | Read the detectedApps collection on each managed device. |
| Intune role: Global Reader, Intune Administrator, or Helpdesk Operator | Required in addition to Graph scopes โ Intune enforces its own RBAC layer on top of delegated/application permissions. |
The fastest way to get this done โ just ask Dex. Copy the prompt below and paste it into your Dex conversation.
For IT Admins
Paste into Dex CoAdmin
For End Users
How an employee would ask Dex for help