Get All Installed Apps from Intune: PowerShell Guide

Table of content

Quick Answer: To get a complete list of all installed apps on Intune devices, use the Intune Admin Center (export from Apps > Monitor > Discovered apps) or automate the query with PowerShell using Microsoft Graph API (GET https://graph.microsoft.com/v1.0/deviceManagement/managedDevices?$expand=detectedApps with DeviceManagementManagedDevices.Read.All permissions) to generate a consolidated CSV across your entire fleet.

Learn how to pull a complete list of installed apps from Intune step by step, with Intune console, PowerShell and Graph API.

Prerequisites

Before you start, make sure you have:

  • An Intune Administrator account with access to Apps > Monitor > Discovered Apps Microsoft Learn.

  • PowerShell 7+ and the Microsoft.Graph.Intune module (for automation) Microsoft Learn.

  • (Optional) An Azure AD app registration with the right Graph permissions if you plan to call the Graph API directly Microsoft Learn.

Method 1: Quick CSV Export (Intune Portal)

  1. Sign in to the Microsoft Endpoint Manager admin center.

  2. Navigate to Apps > Monitor > Discovered apps.

    How to Get All Installed Apps on Devices from Intune - IntunEDiscoverApp 300x87

  3. Click Export to download a .csv report containing:

    • Application name

    • Platform

    • Version

    • Publisher

    • Device count

This produces a clean one-click inventory, perfect for quick audits. Also, if you need the result for specific application, just search with App name.

Method 2: Automate with PowerShell

Automating your export means you’ll never click the portal again. This script will connect to Microsoft Intune using Graph API and fetch all the installed application on all devices and will export to C: drive.

POWERSHELL • Export-IntuneInstalledApps.ps1
<#
.SYNOPSIS
    Export all installed applications across Intune-managed devices via Microsoft Graph API.
.DESCRIPTION
    Queries Microsoft Graph /deviceManagement/managedDevices to enumerate detected apps per device,
    extracts device names, app names, versions, and bundle IDs, and exports everything into a structured CSV.
.NOTES
    Requires Microsoft Graph Application Permission: DeviceManagementManagedDevices.Read.All
#>

[CmdletBinding()]
param(
    [string]$TenantID = "YOUR_TENANT_ID",
    [string]$ClientID = "YOUR_CLIENT_ID",
    [string]$ClientSecret = "YOUR_CLIENT_SECRET",
    [string]$OutputCsv = "$env:USERPROFILE\Desktop\Intune_Installed_Apps.csv",
    [int]$RequestTimeout = 120
)

# Start local log transcript
$LogPath = "$env:ProgramData\TechEUC\Logs"
if (-not (Test-Path -Path $LogPath)) {
    New-Item -Path $LogPath -ItemType Directory -Force | Out-Null
}
$LogFilePath = Join-Path -Path $LogPath -ChildPath "IntuneAppInventory.log"
Start-Transcript -Path $LogFilePath -Append -Force

try {
    # Get Access Token via OAuth 2.0
    Write-Host "[INFO] Authenticating to Microsoft Graph API..." -ForegroundColor Cyan
    $TokenUrl = "https://login.microsoftonline.com/$TenantID/oauth2/v2.0/token"
    $TokenBody = @{
        Client_Id     = $ClientID
        Scope         = "https://graph.microsoft.com/.default"
        Client_Secret = $ClientSecret
        Grant_Type    = "client_credentials"
    }
    $TokenResponse = Invoke-RestMethod -Uri $TokenUrl -Method Post -Body $TokenBody -TimeoutSec $RequestTimeout
    $AccessToken = $TokenResponse.access_token

    # Define Headers for Graph API
    $Headers = @{
        Authorization  = "Bearer $AccessToken"
        "Content-Type" = "application/json"
    }

    # Query Microsoft Graph API for Managed Devices with detected apps
    Write-Host "[INFO] Querying Intune managed devices and installed apps..." -ForegroundColor Cyan
    $BaseUrl = "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices?`$expand=detectedApps(`$select=displayName,version,sizeInByte)&`$select=id,deviceName,userPrincipalName,operatingSystem,osVersion"

    $AllApps = [System.Collections.Generic.List[PSObject]]::new()

    $NextLink = $BaseUrl
    while ($NextLink) {
        $Response = Invoke-RestMethod -Uri $NextLink -Headers $Headers -Method Get -TimeoutSec $RequestTimeout
        foreach ($Device in $Response.value) {
            if ($Device.detectedApps) {
                foreach ($App in $Device.detectedApps) {
                    $AllApps.Add([PSCustomObject]@{
                        DeviceName        = $Device.deviceName
                        UserPrincipalName = $Device.userPrincipalName
                        OperatingSystem   = $Device.operatingSystem
                        OSVersion         = $Device.osVersion
                        ApplicationName   = $App.displayName
                        ApplicationVersion= $App.version
                        AppSizeBytes      = $App.sizeInByte
                    })
                }
            }
        }
        $NextLink = $Response.'@odata.nextLink'
    }

    # Export to CSV
    if ($AllApps.Count -gt 0) {
        $AllApps | Export-Csv -Path $OutputCsv -NoTypeInformation -Force
        Write-Host "[SUCCESS] Exported $($AllApps.Count) application records to $OutputCsv" -ForegroundColor Green
    } else {
        Write-Warning "[WARN] No installed applications discovered on managed devices."
    }
}
catch {
    Write-Error "[FATAL] Script execution failed: $($_.Exception.Message)"
}
finally {
    Stop-Transcript
}

After this Powershell Graph API script is ran, All the applications installed on devices will be exported to the CSV, you can use this script in Power BI too if you need the live dashboard. You can run this script as Windows task scheduler job to get daily email to your inbox.

IntuneDiscoveredApp

Next Steps in Production

Well, that’s your complete toolkit to get all installed apps on devices from Intune, portal, PowerShell, or Graph API. Here’s what I think: pick the method that fits your workflow, automate it, and never miss a single app again.

For more hands-on Intune deployment and troubleshooting playbooks, explore our guides on Deploying Win32 Apps with .IntuneWin Packaging and Troubleshooting Slow Intune App Deployments.

For more hands-on Intune guides, swing by techeuc.com and subscribe for updates. If you need any help or facing any issues, Please reach out to me or contact me.

TechEUC - Atoofa Shaikh
FIVERR PRO VERIFIED 12+ YRS EXPERIENCE

Atoofa Shaikh

Senior Microsoft 365, EUC & Cloud Endpoint Architect

Need custom Win32 App Packaging, PowerShell Automation, Zero-Touch Intune Autopilot, or SCCM Co-Management for your enterprise or MSP? I specialize in production-grade deployment architectures with zero downtime.

Table of content

Subscribe to Blog

Signup to our weekly newsletter