Intune bietet die Möglichkeit, pro Gerät nicht nur die über Intune installierten Apps anzuzeigen, sondern auch die auf dem Gerät erkannten Apps (Discovered Apps bzw. Apps aus der Systemsteuerung). Da diese Ansicht relativ statisch ist und du hier nur eine Ansicht pro Gerät hast, ist es schwierig, Auswertungen über die gesamte Umgebung zu erstellen, z. B. um zu sehen, welche App im Portfolio fehlt, da diese häufig von den Benutzern selbst installiert wird. Warum nutzen wir nicht Log Analytics, um mehr Möglichkeiten zu haben, mit diesen Informationen zu arbeiten? In diesem Blog möchte ich dir zeigen, wie du das mit einem Skript ganz einfach umsetzen kannst.


Inhaltsverzeichnis
Warum Discovered Apps sammeln?
Das Discovered-App-Inventar ist ein oft übersehener Schatz. Es zeigt dir genau, welche Software auf einem Gerät liegt, einschließlich Programmen, die nie über dein Management-Tooling verteilt wurden. Wenn du diese Daten aus dem Portal herausziehst, gewinnst du echte Reporting-Möglichkeiten: Du kannst unerwünschte Software aufspüren, Lizenzrisiken nachverfolgen und Lücken in deinem Anwendungsportfolio finden. Hintergründe dazu, was dieses Inventar enthält, findest du in der offiziellen Microsoft-Learn-Dokumentation zu Discovered Apps.
Log Analytics Workspace erstellen
- Öffne das Azure Portal
- Suche nach Log Analytics workspace

- Wähle die Subscription und die Resource group aus oder erstelle eine neue
- Gib einen Namen für den Workspace ein
- Wähle die Region
- Klicke auf Next: Tags >

- Optional: Tags hinzufügen
- Klicke auf Next: Review + Create >

- Klicke auf Create

Workspace-Informationen abrufen
- Öffne den neuen Log Analytics Workspace
- Navigiere zu Agent management
- Hier findest du die Workspace ID und den Primary key. Diese Informationen benötigst du später, um sie in das Skript einzufügen

Das Discovered-App-Inventar aller Geräte in den Workspace schreiben
Du musst nicht viel tun. Das Skript, das die Arbeit erledigt, ist bereits erstellt. Aktuell ist das Skript so geschrieben, dass es alle Geräte berücksichtigt. Wenn du nur am Sammeln des Inventars bestimmter Geräte interessiert bist, kannst du einen Filter hinzufügen.
- Lade das Skript aus meinem GitHub-Repository herunter
- Öffne das Skript und füge die Workspace ID und den Primary key hinzu

- Führe das Skript aus
- Öffne den Log Analytics Workspace und prüfe, ob du alle Discovered Apps deiner Geräte sehen kannst
Ein praktischer Tipp, bevor du das Ganze im großen Stil ausführst: Starte das Skript zunächst gegen eine kleine Pilotgruppe. Der Graph-Aufruf, der die Discovered Apps liest, ist gepaged, sodass der vollständige Export in einem großen Tenant eine Weile dauern kann. Es ist deutlich einfacher zu prüfen, ob die Datensätze in der richtigen Tabelle landen, solange du nur mit einer Handvoll Geräte arbeitest. Wenn die Pilotdaten stimmen, entfernst du den Filter und lässt das Skript gegen die gesamte Flotte laufen.

Discovered Apps in Log Analytics abfragen
Sobald die Daten in den Workspace fließen, entsteht der eigentliche Mehrwert durch die Abfragen. Das Skript schreibt die Datensätze in ein Custom Log, sodass du mit der Kusto Query Language (KQL) Fragen beantworten kannst, die das Intune-Portal nicht beantworten kann. Eine häufige erste Abfrage ist die nach den am weitesten verbreiteten Anwendungen über die gesamte Umgebung hinweg. So siehst du sofort die Software, die du verwaltest, ohne es zu merken.
DiscoveredApps_CL
| summarize DeviceCount = dcount(DeviceName_s) by AppName_s
| sort by DeviceCount desc
| take 25
Von hier aus ist es nur ein kleiner Schritt, Lizenzrisiken nachzuverfolgen (filtere nach einem Herstellernamen und zähle die eindeutigen Geräte) oder Software zu finden, die gar nicht vorhanden sein sollte. Da die Daten in Log Analytics liegen, kannst du jede dieser Abfragen an ein Azure-Dashboard heften oder in eine Alert-Regel einbinden, sodass dich ein neues Auftreten unerwünschter Software automatisch benachrichtigt, anstatt dass jemand das Portal prüfen muss.
Häufige Stolperfallen
Zwei Dinge führen am häufigsten zu Verwirrung. Erstens erscheint die Custom-Log-Tabelle erst nach dem ersten erfolgreichen Schreibvorgang im Workspace. Erschrick also nicht, wenn die Tabelle unmittelbar nach dem ersten Lauf des Skripts noch fehlt; gib der Ingestion ein paar Minuten Zeit. Zweitens aktualisiert sich das Discovered-App-Inventar in Intune selbst nur etwa einmal pro Tag, das heißt, die exportierten Daten sind so aktuell wie der Erfassungszyklus von Intune und nicht in Echtzeit. Plane das Skript so, dass es nach dieser Aktualisierung läuft, zum Beispiel als täglicher Azure-Automation-Runbook, damit jeder Export das neueste Inventar widerspiegelt und nicht den Stand von gestern.
Fazit
Ich hoffe, ich konnte dir in diesem Blog erklären, wie du die Discovered Apps aus Intune in einen Log Analytics Workspace schreiben kannst, um weitere Analysen durchzuführen. Log Analytics bietet endlose Möglichkeiten, was du mit den Daten machen kannst. Du kannst Dashboards erstellen und die Daten mit weiteren Informationen anreichern,…
Bleib gesund, Cheers
Jannik


This is the solution I have been looking for. Thanks for documenting it. However, when I get to the step of running the script. I get an error at line 1
“The name ‘$customerid’ does not refer to any known column, table, variable or function”
I am running it in the “Logs” section of the Log Analytics Workspace I created in the instructions. Any idea why I am getting this error?