Rozwiązywanie problemów

Objawy, na które najprawdopodobniej natkniesz się podczas konwersji dzienników debugowania DNS, co je powoduje i jak je naprawić.

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

„Plik nie jest prawidłowym plikiem dziennika debugowania DNS”

Sprawdzenie nagłówka odrzuciło dane wejściowe. Zwykle ścieżka jest po prostu błędna — plik .log w tym samym folderze, który nie jest dziennikiem debugowania DNS, lub plik zawierający tylko obrócony nagłówek.

Przejdź przez to krok po kroku:

  1. Otwórz plik. Dziennik debugowania DNS zaczyna się od linii nagłówka takiej jak Message logging started at … i zawiera wpisy zapytań z oznaczeniem czasu.

  2. Potwierdź, że debugowanie DNS jest faktycznie włączone i zapisuje do oczekiwanej ścieżki:

    Get-DnsServerDiagnostics | Select-Object Enable, LogFilePath, MaxMBFileSize
    
  3. Jeśli plik faktycznie jest dziennikiem DNS, ale nagłówek jest nietypowy — ręcznie edytowany, wstępnie filtrowany, niestandardowy eksport — pomiń sprawdzanie:

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

Zachowaj weryfikację w pozostałych miejscach. Pamiętaj, że -SkipHeaderValidation nie może być łączone z -RemoveSourceFile, więc niezweryfikowany plik nigdy nie zostanie usunięty podczas konwersji.

Plik wyjściowy jest pusty lub ma znacznie mniej wierszy niż oczekiwano

Sprawdź kolejno:

  • Czy dziennik w ogóle zawiera wpisy zapytań? Świeżo obrócony dziennik może zawierać tylko nagłówek, jeśli jeszcze nie było zapytań.
  • Czy używasz -ContextFilter? -ContextFilter Packet usuwa wpisy Event i Note zgodnie z założeniem. Jeśli filtrowałeś do Event lub Note, większość kolumn będzie pusta — te typy wpisów zawierają tylko DateTime, ThreadId, Context i Information.
  • Czy dziennik źródłowy był aktywny? Plik, do którego DNS Server nadal zapisuje, może się zmieniać podczas konwersji; najnowsze wpisy mogą być nieobecne, a ostatni rekord może być obcięty. Konwertuj obrócony, zamknięty dziennik, gdy potrzebujesz kompletnego wyniku.
  • Czy plik jest uszkodzony lub obcięty? Sprawdź koniec dziennika pod kątem niedokończonej linii.

Daty są błędne, przesunięte lub dzień i miesiąc są zamienione miejscami

Dziennik został zapisany przez serwer z inną lokalizacją Windows niż sesja wykonująca konwersję. 20.01.2026 i 01/20/2026 opisują ten sam moment, ale tylko jeśli obie strony zgadzają się co do formatu.

# dziennik pochodzi z niemieckiego serwera
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns-berlin.log" -InputCulture 'de-DE'

Ustaw -InputCulture jawnie w zadaniach zaplanowanych, zamiast polegać na kulturze konta, które je uruchamia. Jeśli wynik ma być czytelny dla maszyny, dodaj -OutputCulture 'sv-SE'. Szczegóły w Parametry i opcje.

Wszystko trafia do jednej kolumny po imporcie

Niezgodność separatora. Moduł domyślnie używa ;; twój program oczekiwał , (lub odwrotnie).

Albo uruchom konwersję ponownie z separatorem, którego oczekuje odbiorca:

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

…albo powiedz importerowi, jaki separator ma plik — w Excelu przez Dane → Z tekstu/CSV, w PowerShell przez Import-Csv -Delimiter ';'.

„Odmowa dostępu”

  • Katalog dzienników DNS zwykle wymaga uprawnień administratora. Uruchom PowerShell jako administrator lub uruchom zadanie zaplanowane na koncie z dostępem.
  • Sprawdź także uprawnienia zapisu do katalogu wyjściowego, nie tylko odczytu dziennika.
  • Dla ścieżek SMB/UNC: zadanie uruchamiane jako SYSTEM uwierzytelnia się w sieci jako konto komputera. Przyznaj prawa udziału i NTFS temu kontu komputera (lub grupie Domain Controllers), albo użyj dedykowanego konta usługi.
  • Jeśli -RemoveSourceFile nie powiodło się na końcu pomyślnego przebiegu, konto może czytać dziennik, ale nie może go usunąć.

Przetwarzanie jest bardzo wolne

  1. Najpierw dysk — konwersja jest ograniczona przez I/O. Obciążony wolumin lub wolna ścieżka sieciowa dominują czas działania.
  2. Użyj -NoDetailsParsing, jeśli nie potrzebujesz szczegółów pakietu w formacie JSON; na dziennikach z dużą ilością szczegółów oszczędza to 30–50%.
  3. Użyj -ContextFilter Packet, aby zapisać mniej danych.
  4. Dziel ogromne dzienniki przez obrót dzienników DNS Server zamiast konwertować jeden ogromny plik.
  5. Rozważ wykluczenie katalogu dzienników z antywirusa.

Więcej w Wydajność.

Skompresowany plik wyjściowy jest większy niż oczekiwano

Dzienniki o bardzo różnorodnej zawartości — wiele unikalnych domen, wielu różnych klientów — kompresują się gorzej niż powtarzalne. To normalne. ZIP zwykle i tak osiąga znaczną redukcję; jeśli nie, sprawdź, czy kolumna Details nie powiększa pliku i czy w ogóle jej potrzebujesz.

Statystyki nie zgadzają się z oczekiwaniami

  • Potwierdź, że użyłeś -OutputType Both lub -OutputType Statistic. Przy -OutputType CSV pliki statystyk nie są w ogóle zapisywane.
  • Count to suma, nie liczba unikalna. Jeden klient pytający o tę samą nazwę 500 razy daje 500. To najczęstsza przyczyna „ta liczba nie może być prawidłowa”.
  • Statystyki są grupowane na dni. Dziennik obejmujący dwa dni daje wiersze dla obu.
  • Jeśli ComputerName jest pusty w plikach statystyk, podczas konwersji nie ustawiono -ComputerName.

Zadanie zaplanowane działa interaktywnie, ale nie jako zadanie

Prawie zawsze jedna z trzech rzeczy:

  • Moduł nie znaleziony. SYSTEM z -NoProfile widzi tylko ścieżki modułów globalnych. Zainstaluj moduł globalnie lub dodaj jawne Import-Module DNSServer.DebugLogParser do akcji zadania.
  • Zła kultura. Lokalizacja konta zadania różni się od twojej. Ustaw jawnie -InputCulture i -OutputCulture.
  • Polityka wykonania lub niepodpisany skrypt. Dopasuj -ExecutionPolicy zadania do swojej polityki podpisywania i odblokuj pliki skopiowane z innych miejsc.

Uruchom dokładną linię poleceń zadania ręcznie w tym samym kontekście (np. z PsExec jako SYSTEM), aby odtworzyć problem.

Zgłaszanie problemu

Jeśli nic z powyższego nie pomaga:

  1. Zaktualizuj moduł do najnowszej wersji i spróbuj ponownie.

  2. Przeszukaj GitHub issues pod kątem tego samego objawu.

  3. Zbierz diagnostykę:

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

    oraz dokładne polecenie, które wykonałeś, pełny komunikat błędu wraz ze śladem stosu i — jeśli możesz udostępnić — mały zanonimizowany fragment dziennika, który odtwarza problem.

  4. Otwórz nowe zgłoszenie z tymi informacjami.