Fehlerbehebung

Symptome, auf die du beim Konvertieren von DNS-Debug-Logs wahrscheinlich stößt, was sie verursacht und wie du sie behebst.

For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /de/docs/08-troubleshooting/index.md.

„Die Datei ist keine gültige DNS-Debug-Logdatei“

Die Header-Prüfung hat die Eingabe abgelehnt. Meistens ist der Pfad einfach falsch — eine .log-Datei im gleichen Ordner, die kein DNS-Debug-Log ist, oder eine Datei, die nur einen rotierten Header enthält.

Arbeite das Folgende durch:

  1. Öffne die Datei. Ein DNS-Debug-Log beginnt mit einer Header-Zeile wie Message logging started at … und enthält danach mit Zeitstempel versehene Abfrageeinträge.

  2. Bestätige, dass das DNS-Debug-Logging tatsächlich aktiviert ist und in den erwarteten Pfad schreibt:

    Get-DnsServerDiagnostics | Select-Object Enable, LogFilePath, MaxMBFileSize
    
  3. Wenn die Datei tatsächlich ein DNS-Log ist, der Header aber ungewöhnlich ist — handbearbeitet, vorgefiltert, ein benutzerdefinierter Export — kannst du die Prüfung umgehen:

    Convert-DNSDebugLogFile -InputFile "C:\Logs\odd.log" -SkipHeaderValidation
    

Behalte die Validierung überall sonst aktiviert. Beachte, dass -SkipHeaderValidation nicht mit -RemoveSourceFile kombiniert werden kann, sodass eine nicht verifizierte Datei durch die Konvertierung niemals gelöscht wird.

Ausgabedatei ist leer oder enthält viel weniger Zeilen als erwartet

Prüfe in dieser Reihenfolge:

  • Enthält das Log überhaupt Abfrageeinträge? Ein frisch rotiertes Log kann außer einem Header noch keine Einträge enthalten, wenn noch keine Abfragen stattgefunden haben.
  • Ist ein -ContextFilter aktiv? -ContextFilter Packet entfernt per Design Event- und Note-Einträge. Wenn du auf Event oder Note gefiltert hast, sind die meisten Spalten ebenfalls leer — diese Eintragstypen enthalten nur DateTime, ThreadId, Context und Information.
  • War das Quell-Log aktiv? Eine Datei, in die der DNS-Server noch schreibt, kann sich während der Konvertierung ändern; die neuesten Einträge fehlen möglicherweise und der letzte Datensatz kann abgeschnitten sein. Konvertiere ein rotiertes, geschlossenes Log, wenn du vollständige Ausgabe brauchst.
  • Ist die Datei beschädigt oder abgeschnitten? Prüfe das Ende des Logs auf eine halbgeschriebene Zeile.

Daten sind falsch, verschoben oder Tag und Monat vertauscht

Das Log wurde von einem Server mit einer anderen Windows-Lokalisierung geschrieben als die Sitzung, die die Konvertierung durchführt. 20.01.2026 und 01/20/2026 beschreiben denselben Zeitpunkt, aber nur, wenn beide Seiten dasselbe Format verwenden.

# Log stammt von einem deutschen Server
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns-berlin.log" -InputCulture 'de-DE'

Setze -InputCulture explizit in geplanten Aufgaben, anstatt dich auf die Kultur des Kontos zu verlassen, das sie zufällig ausführt. Wenn die Ausgabe maschinenlesbar sein soll, füge -OutputCulture 'sv-SE' hinzu. Details in Parameter und Optionen.

Nach dem Import landet alles in einer Spalte

Trennzeichen stimmt nicht überein. Das Modul schreibt standardmäßig ;; dein Importer erwartete , (oder umgekehrt).

Entweder führe die Konvertierung mit dem vom Importer gewünschten Trennzeichen erneut aus:

Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -Delimiter ","

…oder sag dem Importer, welches Trennzeichen die Datei verwendet — in Excel über Daten → Aus Text/CSV, in PowerShell über Import-Csv -Delimiter ';'.

„Zugriff verweigert“

  • Das DNS-Log-Verzeichnis erfordert typischerweise Administratorrechte. Starte PowerShell erhöht oder führe die geplante Aufgabe mit einem Konto aus, das Zugriff hat.
  • Prüfe auch Schreibrechte für das Ausgabeverzeichnis, nicht nur Leserechte für das Log.
  • Bei SMB/UNC-Pfaden: Ein Task, der als SYSTEM läuft, authentifiziert sich im Netzwerk als Computer-Konto. Gewähre Freigabe- und NTFS-Rechte für dieses Computerkonto (oder für die Gruppe Domain Controllers), oder nutze ein dediziertes Dienstkonto.
  • Wenn -RemoveSourceFile am Ende eines ansonsten erfolgreichen Laufs fehlschlägt, kann das Konto das Log lesen, aber nicht löschen.

Verarbeitung ist sehr langsam

  1. Zuerst die Festplatte prüfen — die Konvertierung ist I/O-gebunden. Ein ausgelastetes Volume oder ein langsamer Netzwerkpfad bestimmt die Laufzeit.
  2. Nutze -NoDetailsParsing, wenn du die Paket-Detail-JSON nicht brauchst; bei detailreichen Logs spart das 30–50 %.
  3. Nutze -ContextFilter Packet, um weniger zu schreiben.
  4. Teile riesige Logs mit DNS-Server-Log-Rollover auf, statt eine riesige Datei zu konvertieren.
  5. Ziehe eine Antivirus-Ausnahme für das Log-Verzeichnis in Betracht.

Mehr dazu in Performance.

Komprimierte Ausgabe ist größer als erwartet

Logs mit sehr vielfältigem Inhalt — viele einzigartige Domains, viele verschiedene Clients — komprimieren sich weniger gut als repetitive. Das ist normal. ZIP erreicht trotzdem meist eine deutliche Reduktion; wenn nicht, prüfe, ob die Spalte Details die Datei aufbläht und ob du sie überhaupt brauchst.

Statistiken stimmen nicht mit den Erwartungen überein

  • Vergewissere dich, dass du -OutputType Both oder -OutputType Statistic verwendet hast. Bei -OutputType CSV werden keine Statistikdateien geschrieben.
  • Count ist eine Gesamtzahl, keine Anzahl unterschiedlicher Werte. Ein Client, der denselben Namen 500-mal abfragt, trägt 500 bei. Das ist die häufigste Ursache für „diese Zahl kann nicht stimmen“.
  • Statistiken werden pro Tag gruppiert. Ein Log, das zwei Tage umfasst, erzeugt Zeilen für beide.
  • Wenn ComputerName in den Statistikdateien leer ist, wurde -ComputerName während der Konvertierung nicht gesetzt.

Die geplante Aufgabe funktioniert interaktiv, aber nicht als Aufgabe

Fast immer eine von drei Ursachen:

  • Modul nicht gefunden. SYSTEM mit -NoProfile sieht nur maschinenweite Modulpfade. Installiere das Modul maschinenweit oder füge der Task-Aktion ein explizites Import-Module DNSServer.DebugLogParser hinzu.
  • Falsche Kultur. Die Lokalisierung des Task-Kontos unterscheidet sich von deiner. Setze -InputCulture und -OutputCulture explizit.
  • Ausführungsrichtlinie oder unsigniertes Skript. Passe die -ExecutionPolicy der Aufgabe an deine Signierrichtlinie an und hebe die Blockierung von Dateien auf, die von anderswo kopiert wurden.

Führe die genaue Befehlszeile der Aufgabe manuell im gleichen Kontext aus (zum Beispiel mit PsExec als SYSTEM), um das Problem zu reproduzieren.

Ein Problem melden

Wenn nichts davon hilft:

  1. Aktualisiere auf die neueste Modulversion und versuche es erneut.

  2. Suche in den GitHub-Issues nach dem gleichen Symptom.

  3. Sammle die Diagnosedaten:

    $PSVersionTable
    Get-Module DNSServer.DebugLogParser -ListAvailable | Select-Object Name, Version, Path
    Get-Culture
    

    plus den genauen Befehl, den du ausgeführt hast, die vollständige Fehlermeldung inklusive Stacktrace und — wenn du sie teilen kannst — einen kleinen anonymisierten Ausschnitt des Logs, der das Problem reproduziert.

  4. Öffne ein neues Issue mit diesen Informationen.