Dive deeper into the IME log with a simple change of the log level

Tiefer ins IME-Log eintauchen (Log-Level)

Zur Fehlersuche ist es hilfreich, das Log-Level der Intune Management Extension zu ändern. Da dies in einer XML-Konfigurationsdatei der IME erfolgen muss und das Einfügen eines falschen Werts die Funktion der IME beeinträchtigen kann, habe ich ein Skript geschrieben, das die Änderung des Log-Levels einfach macht.

Tiefer ins IME-Log eintauchen mit einer einfachen Anpassung des Log-Levels

So änderst du das Log-Level

Um das Log-Level der IME zu ändern, musst du die Konfigurationsdatei öffnen. Du findest sie unter folgendem Pfad: C:\Program Files (x86)\Microsoft Intune Management Extension\Microsoft.Management.Services.IntuneWindowsAgent.exe.config

In dieser Datei findest du die Einstellung system.diagnostics. Hier gibt es das Attribut switchValue, mit dem du das Log-Level festlegst. Wenn du mehr darüber lesen möchtest, wie die Intune-Diagnose funktioniert, ist die offizielle Microsoft-Learn-Dokumentation ein guter Ausgangspunkt.

Der switchValue verwendet die üblichen .NET-Trace-Level, und es hilft zu wissen, was jedes davon tatsächlich steuert. Critical protokolliert nur Fehler, die den Agenten anhalten, Error ergänzt reguläre Fehler, Warning umfasst behebbare Probleme, Information ist der Standard und protokolliert normale Aktivitäten wie die Verarbeitung von Richtlinien und Apps, und Verbose schreibt alles inklusive detailliertem Schritt-für-Schritt-Trace mit. Jedes Level schließt die darüberliegenden Level mit ein, daher ist Verbose das mit Abstand detaillierteste und zugleich das lauteste.

Tiefer ins IME-Log eintauchen mit einer einfachen Anpassung des Log-Levels

Die verschiedenen Log-Level ermitteln

Um das Skript zu schreiben, muss ich zunächst herausfinden, welche Log-Level es überhaupt gibt. Da es dafür keine Dokumentation gibt und dies auch nicht selbsterklärend ist, muss ich einen Weg finden, an die Werte zu gelangen. Wo ließe sich diese Information besser finden als direkt im Code der IME? Die IME ist kompilierter C#-Code, also habe ich mich nach einem C#-Decompiler umgesehen und ihn mit JustDecompile gefunden. Diesen habe ich heruntergeladen und auf meinem System installiert.

Wie funktioniert das Decompilieren der IME nun? Das ist eigentlich ganz einfach. Ich bin zum Pfad der IME navigiert (C:\Program Files (x86)\Microsoft Intune Management Extension) und kann sie mit einem Rechtsklick problemlos decompilieren:

Tiefer ins IME-Log eintauchen mit einer einfachen Anpassung des Log-Levels

Danach habe ich nach der Funktion gesucht, die die Logs schreibt, und die verschiedenen Event-Typen gefunden

Tiefer ins IME-Log eintauchen mit einer einfachen Anpassung des Log-Levels
Tiefer ins IME-Log eintauchen mit einer einfachen Anpassung des Log-Levels

Das Skript

Mit diesen Informationen habe ich ein Skript geschrieben, das das Log-Level in der XML ändert und den Dienst neu startet. Das Skript findest du in meinem GitHub-Repository.

<#
Version: 1.0
Author: Jannik Reinhard (jannikreinhard.com)
Script: Change-ImeLogLevel
Description:
Change the loglevel from the Intune management extension
Release notes:
Version 1.0: Init
#>

$logLevelSelection = Read-Host "Enter the log level [Critical, Error, Warning, Information, Verbose]"
while("Critical", "Error", "Warning", "Information", "Verbose" -notcontains $logLevelSelection )
{
    $logLevelSelection = Read-Host "Enter the log level [Critical, Error, Warning, Information, Verbose]"
}

$imeConfFile = "C:\Program Files (x86)\Microsoft Intune Management Extension\Microsoft.Management.Services.IntuneWindowsAgent.exe.config"

$configFile = New-Object System.XML.XMLDocument
$configFile.Load($imeConfFile)

$logLevel = $configFile.configuration.'system.diagnostics'.sources.source
$logLevel.switchValue = "$logLevelSelection"
$configFile.Save($imeConfFile)

Restart-Service -DisplayName "Microsoft Intune Management Extension"

Write-Host "IME Log level changed to $logLevelSelection"

Du musst nur das Skript ausführen, das Log-Level auswählen und das war’s. Nach dem Neustart des Dienstes wird der neue Wert sofort wirksam, sodass du dein Problem reproduzieren kannst und die zusätzlichen Details bereits im Log stehen.

Ein praktischer Tipp aus der Praxis: Setze das Level nur für das kurze Zeitfenster auf Verbose, in dem du ein Problem aktiv reproduzierst. Verbose erzeugt sehr schnell sehr viele Daten, und die IME rotiert ihre Log-Dateien, sodass ältere Einträge überschrieben werden können, bevor du sie überhaupt liest.

Die Logs, die du brauchst, sind IntuneManagementExtension.log und AgentExecutor.log unter C:\ProgramData\Microsoft\IntuneManagementExtension\Logs, und sie lassen sich bequem mit CMTrace öffnen. Ein häufiger Stolperstein ist es, den Agenten dauerhaft auf Verbose zu lassen – das füllt den Datenträger und macht die Logs eher schwerer als leichter lesbar, weil das eigentliche Signal im Rauschen untergeht.

Tiefer ins IME-Log eintauchen mit einer einfachen Anpassung des Log-Levels

Fazit

Manchmal ist es wirklich eine große Hilfe, mehr aus einer Log-Datei herauszulesen, um die IME besser zu verstehen oder die Fehlersuche zu vereinfachen. Ich hoffe, ich konnte dir mit meinem Blog helfen, damit du mehr aus dem IME-Log herauslesen kannst.

Wenn du mit der Fehlersuche oder dem Testen fertig bist, setze die IME immer wieder auf den Information-Status zurück und lösche die Log-Datei, da sie sensible Informationen enthalten kann.

Bleib gesund, Cheers
Jannik

Update 02.08.2022

Du kannst mein Skript auch aus der PowerShell Gallery herunterladen:

Install-Script -Name Change-ImeLogLevel

6 thoughts on “Tiefer ins IME-Log eintauchen (Log-Level)

  1. this doesn’t work as now IME service can’t even start. when i tried restart it manually, it said something like “IME service started and then stopped…”
    restart machine won’t help. i compare the xml file in Microsoft.Management.Services.IntuneWindowsAgent.exe.config from a working pc to this pc that was ran with your script. both has the same letter and everything tho. so idk what is wrong. any idea?

    error from your function:

    WARNING: IME Log level changed to information
    Restart-Service : Failed to start service ‘Microsoft Intune Management Extension (IntuneManagementExtension)’.
    At C:\Program Files\WindowsPowerShell\Scripts\Change-ImeLogLevel.ps1:56 char:5
    + Restart-Service -DisplayName “Microsoft Intune Management Extensi …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Restart-Service]
    , ServiceCommandException
    + FullyQualifiedErrorId : StartServiceFailed,Microsoft.PowerShell.Commands.RestartServiceCommand

    WARNING: IME Service was restarted

Comments are closed.