PRTG-Monitoring – Installationsstatus von Intune-Apps

So überwachen Sie mit PRTG Ihre Intune-Apps und deren Rollout-Status (Gerätestatus).


Wenn Sie eine Anwendung mit Microsoft Intune verteilen, möchten Sie die Rollout-Status vielleicht in Ihrem bestehenden Monitoring im Blick behalten, um zu sehen, ob die Installationen auf den Geräten sauber durchlaufen. Eine Möglichkeit dafür ist PRTG-Monitoring für den Endpoint Manager (Intune).
Werden die Arbeitsgeräte mit Microsoft Endpoint Manager (Intune) verwaltet, lassen sich die Informationen aus dem Endpoint Manager auch in Ihr bestehendes PRTG-Monitoring holen.
Für die Überwachung der Kennzahlen verwenden wir die Monitoring-Software von Paessler. PRTG überwacht Datenverkehr, Verfügbarkeit und Performance von Geräten und Anwendungen in IT-Infrastrukturen. Dazu gehören klassische Netzwerkgeräte wie Server, Router, Switches und Firewalls, aber auch virtuelle Umgebungen. Und – wie in diesem Beispiel – mit den passenden Skripten auch Cloud-Komponenten wie der Microsoft Endpoint Manager.
In diesem Beispiel messen wir mit PRTG folgende Kennzahlen aus dem Microsoft Endpoint Manager:
- Installationsstatus gesamt
Der Installationsstatus aller Apps auf den Geräten insgesamt. Laut Dokumentation kann der Status einer der folgenden sein:
"installed", "failed", "notInstalled", "uninstallFailed", "pendingInstall", "unknown", "notApplicable".
Mit dem Skriptparameter «-states» filtern Sie die Status, die Sie in PRTG messen möchten, und können zusätzlich ein «total» ausgeben (Beispiele unten). - Installationsstatus pro Produkt
Den Installationsstatus bestimmter Apps mit PRTG messen. Mit dem Skriptparameter «-softwarenames» filtern Sie einzelne Apps heraus. Der Parameter akzeptiert auch «all», um alle in Intune gefundenen Apps anzuzeigen, oder «overall», um den Status über alle Apps zusammen anzuzeigen (Beispiele und Anwendungsfälle unten).
Schauen wir uns nun einige Anwendungsfälle an.
Anwendungsfälle
Rollout-Status einer bestimmten App: 7zip
Um den Rollout-Status einer bestimmten App anzuzeigen, verwenden wir folgende Parameter:
v1_prtg_intune_app_status.ps1 -states 'total;installed;failed;pendingInstall;unknown;notApplicable' -softwarenames '7zip 22'

Genauso lassen sich mehrere oder sogar alle Softwarepakete anzeigen, indem Sie mehrere Softwarenamen angeben (-softwarenames '7zip 22;winscp') oder einfach (-softwarenames 'all').
Installationsstatus gesamt
Prüfen wir den Installationsstatus aller Softwarepakete insgesamt. In unserer Testumgebung sind 2 Softwarepakete 2 Geräten zugewiesen. Wie der Screenshot unten zeigt, haben wir deshalb insgesamt 4 Status «installed», es ist also alles in Ordnung. Dafür haben wir folgende Skriptparameter verwendet:
v1_prtg_intune_app_status.ps1 -states 'installed;failed;total;pendingInstall;unknown;notApplicable' -softwarenames 'overall'

Alle fehlgeschlagenen Installationen anzeigen
Zum Schluss erstellen wir ein Dashboard für alle fehlgeschlagenen Installationen, damit das Prinzip der Skriptparameter klar wird. Neue Apps in Intune erscheinen automatisch, weil wir -softwarenames 'all' angegeben haben:
v1_prtg_intune_app_status.ps1 -states 'failed' -softwarenames 'all'
Leider gibt es nicht viel zu sehen, weil unsere Pakete «winscp» und «7zip 22» im Moment keine fehlgeschlagenen Installationen haben.

Hail Mary – nur zum Spass
Und zum Spass noch einer, der einfach alles anzeigt. Obwohl wir in der Testumgebung nur 2 Pakete haben, wird es schnell unübersichtlich.
v1_prtg_intune_app_status.ps1 -states 'all' -softwarenames 'all;overall'

Voraussetzungen
Damit sich die gewünschten Kennzahlen auslesen lassen, braucht es im Azure AD (heute Microsoft Entra ID) einen Service Principal (App-Registrierung). Dieser muss die passenden Leseberechtigungen in der Microsoft Graph API haben.
https://learn.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals
Auf dem PRTG-Server bzw. der PRTG-Probe ist das PowerShell-Modul «MSAL.PS» installiert. Das ist das Modul der Microsoft Authentication Library, mit dem das Skript ein Access Token bezieht.
Install-Module MSAL.PS -Scope AllUsers -ForcePowerShell: MSAL-Bibliothek (Microsoft Authentication Library) installieren
Das Skript verwendet diese Bibliothek an einer Stelle, um ein Access Token zu holen:
# acquire azure authentication token
$MsalToken = Get-MsalToken -TenantId $tenant_id -ClientId $app_id -ClientSecret ($client_secret | ConvertTo-SecureString -AsPlainText -Force)
#Connect to Graph using access token
Connect-Graph -AccessToken $MsalToken.AccessTokenPowerShell: Azure-Authentifizierungstoken beziehen
Erscheint eine Fehlermeldung und lässt sich NuGet nicht installieren, muss auf der Probe, auf der das Skript des Sensors läuft, zuerst TLS 1.2 erzwungen werden.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-PackageProvider NuGetPowerShell: TLS 1.2 erzwingen
Service Principal (App-Registrierung)
Nun legen Sie im Azure Active Directory einen «Service Principal» (App-Registrierung) inklusive Secret an. Dabei erhalten Sie verschiedene Angaben, die Sie anschliessend für das Monitoring-Skript brauchen, damit es auf die Informationen in Azure zugreifen kann:
- Application ID (app_id)
- Azure Tenant ID (tenant_id)
- Application Client Secret (client_secret)
Wie Sie den Service Principal anlegen, ist im Download (Readme) ausführlich beschrieben.
PowerShell und Graph API
Die gewünschten Kennzahlen aus dem Endpoint Manager stellt Microsoft über die Graph API bereit. Früher hatte jedes Produkt seine eigene API oder sogar mehrere. Exchange kennt EWS, REST, ActiveSync und MAPI/HTTP, Skype for Business hat eine UCWA und eine UCMA, und so liesse sich die Liste endlos fortsetzen. Jede API hat ihre eigene URL, eigene Methoden, ein eigenes Format und eigene Authentifizierungsmechanismen.
Mit Microsoft Graph will Microsoft einen einheitlichen Zugriff auf alle Daten über eine REST-Schnittstelle bieten. Unser Skript verwendet folgenden Endpoint:
https://graph.microsoft.com/V1.0/deviceManagement/managedDevices
Dieser ist bei Microsoft hier genauer dokumentiert.
PRTG-Konfiguration
Sensor anlegen
- Legen Sie auf der Probe, auf der unser eigenes EXE/XML-Skript installiert ist, einen neuen Sensor vom Typ EXE/Script Advanced an.
- Wählen Sie als Skript «Powershell Script – v1_prtg_intune_app_status.ps1».
- Füllen Sie das Feld «Parameters» aus:
-app_id '<%azure_application_id>'
-tenant_id '<%azure_tenant_id>'
-client_secret '<%azure_application_client_secret>'
-states 'all'
-softwarenames 'all;overall' - Erhöhen Sie den Timeout von 60 s auf 120 s.
- Stellen Sie das Intervall nach Bedarf ein, z. B. einmal pro Stunde.
Die Alarmierung ist individuell. Die gewünschten Schwellenwerte legen Sie deshalb in den Kanaleinstellungen unter «Value Lookups and Limits» fest. https://www.paessler.com/manuals/prtg/sensor_channels_settings
Mit wenig Aufwand erscheinen wichtige Informationen aus dem Microsoft Endpoint Manager im Monitoring, und wird ein festgelegter Schwellenwert überschritten, löst PRTG einen Alarm aus, per E-Mail, Ticket, Microsoft Teams usw.