Parametry i opcje

Co faktycznie zmienia każda opcja Convert-DNSDebugLogFile, kiedy jej potrzebujesz i na jakie pułapki łatwo się natknąć.

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

Ta strona wyjaśnia opcje prostym językiem i w kolejności, w jakiej zazwyczaj ich potrzebujesz. To przewodnik, a nie specyfikacja — autorytatywna, zawsze aktualna lista parametrów znajduje się w referencji poleceń oraz w:

Get-Help Convert-DNSDebugLogFile -Full

Krótkie podsumowanie

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

Ta jedna linia już daje rozsądne zachowanie: pliki danych i statystyk, średnik jako separator, format daty twojej maszyny, włączona walidacja nagłówka, oryginalny plik dziennika nietknięty. Wszystko poniżej to dopracowywanie.

OpcjaDomyślnieZmień, gdy
-InputFile(wymagane)zawsze
-OutputFileścieżka wejściowa z .csvchcesz wynik gdzie indziej
-Delimiter;twój odbiorca oczekuje przecinka, tabulatora lub kreski pionowej
-ComputerNamepustełączysz dzienniki z więcej niż jednego serwera
-OutputTypeBothchcesz tylko dane albo tylko podsumowania
-ContextFilterAllinteresuje cię tylko rzeczywisty ruch DNS
-InputCulturebieżąca kulturadziennik pochodzi z serwera o innej lokalizacji
-OutputCulturebieżąca kulturaplik CSV będzie czytać maszyna
-NoDetailsParsingwyłączoneważniejsza jest przepustowość niż szczegóły pakietów
-CompressOutputwyłączonearchiwizujesz lub przesyłasz wyniki
-RemoveSourceFilewyłączonezaplanowane sprzątanie i ufasz wynikowi
-SkipHeaderValidationwyłączoneplik jest poprawny, ale nagłówek nietypowy

Wejście i wyjście

-InputFile

Ścieżka do dziennika do konwersji. Przyjmuje tablicę i dane z potoku — dlatego działa to:

Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" | Convert-DNSDebugLogFile

Get-ChildItem zwraca obiekty z właściwością FullName, a -InputFile akceptuje ją po nazwie właściwości (aliasy to m.in. FullName, Path, FilePath). Nie trzeba ForEach-Object.

Działają zarówno ścieżki lokalne, jak i SMB/UNC:

Convert-DNSDebugLogFile -InputFile "\\dc01\C$\Administration\Logs\DNSServer\dns.log"

Polecenie może też otworzyć dziennik, który DNS Server ma aktualnie otwarty. Zobacz aktywne dzienniki poniżej, zanim na tym polegasz.

-OutputFile

Bez tego plik CSV trafia obok pliku wejściowego, z tą samą nazwą bazową i rozszerzeniem .csv. Z tym parametrem kontrolujesz miejsce docelowe.

-Delimiter

Domyślnie średnik, bo w lokalizacjach, gdzie przecinek jest separatorem dziesiętnym, Excel tego oczekuje. Użyj -Delimiter "," dla narzędzi i baz danych, które zakładają klasyczny format CSV z przecinkiem, lub -Delimiter "`t" dla tabulatora.

Cokolwiek wybierzesz, używaj tej samej wartości po stronie importu. Niezgodność to najczęstsza przyczyna, że „wszystko wylądowało w jednej kolumnie”.

Etykietowanie i filtrowanie

-ComputerName

Wypełnia kolumnę ComputerName. Kolumna istnieje zawsze; ten parametr tylko nadaje jej wartość.

Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ComputerName $env:COMPUTERNAME

Ustawiaj zawsze, gdy kilka serwerów zasila jeden zestaw danych — inaczej potem nie odróżnisz, z którego DC pochodzi wiersz.

-OutputType

  • CSV — tylko plik danych
  • Statistic — tylko dwa pliki zbiorcze, bez danych wierszowych
  • Both — wszystkie trzy pliki (domyślnie)

Statistic to szybka, mała opcja, gdy potrzebujesz tylko trendów dziennych. CSV jest właściwe, gdy system dalej sam agreguje dane.

-ContextFilter

Dziennik debugowania DNS miesza rzeczywisty ruch zapytań z wewnętrznym szumem serwera. -ContextFilter decyduje, co przejdzie do wyniku.

# tylko prawdziwy ruch DNS
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter Packet

# ruch plus zdarzenia serwera, ale bez not diagnostycznych
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter Packet, Event
WartośćZawiera
Allwszystko (domyślnie)
Packetzapytania i odpowiedzi DNS — dane potrzebne większości analiz
Eventzdarzenia serwera, np. „Serwer DNS został uruchomiony”
Notenotatki diagnostyczne i ostrzeżenia, np. błędy gniazda

Dodatkowe typy kontekstu (DSPoll, Init, Lookup, Recurse, Remote, Tombstone) pojawiają się pod All.

Filtrowanie tylko do Event lub Note wypełnia tylko DateTime, ThreadId, Context i Information — kolumny protokołu pozostają puste, bo te wpisy ich po prostu nie zawierają.

-ContextFilter Packet to zwykły wybór dla potoków bezpieczeństwa i raportowania: usuwa szum i zauważalnie zmniejsza wynik.

Dzienniki międzynarodowe

Serwer DNS zapisuje znaczniki czasu w lokalizacji Windows maszyny, na której działa. Niemiecki DC zapisze 20.01.2026 23:00:16; amerykański serwer 1/20/2026 11:00:16 PM. Jeśli lokalizacja twojej stacji różni się od serwera, parsowanie się nie uda — albo, co gorsza, dzień i miesiąc się zamienią.

-InputCulture

Powiedz parserowi, jaką lokalizację ma dziennik źródłowy:

Convert-DNSDebugLogFile -InputFile "C:\Logs\dns-berlin.log" -InputCulture 'de-DE'
KulturaFormat znacznika czasu w dzienniku
de-DEDD.MM.YYYY HH:MM:SS
en-USM/D/YYYY H:MM:SS AM/PM
en-GBDD/MM/YYYY HH:MM:SS
sv-SEYYYY-MM-DD HH:MM:SS

Domyślnie to kultura sesji uruchamiającej polecenie. W środowisku mieszanym ustaw ją jawnie, zamiast polegać na domyśle — i pamiętaj, że zadanie zaplanowane jako SYSTEM może mieć inną kulturę niż ta, której używałeś interaktywnie.

-OutputCulture

Kontroluje, jak znaczniki czasu są zapisywane do CSV:

# wyjście w stylu ISO, które rozumie SQL Server, Power BI i pandas
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputCulture 'sv-SE'

# ten sam efekt, jawna kultura invariant
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" `
    -OutputCulture ([System.Globalization.CultureInfo]::InvariantCulture)

Zasada: jeśli człowiek otwiera plik w Excelu, dopasuj lokalną kulturę. Jeśli czyta go maszyna, użyj sv-SE lub kultury invariant i przestań się martwić ustawieniami regionalnymi po stronie importu.

Te dwa parametry są niezależne — możesz czytać szwedzki dziennik i zapisywać wynik w formacie amerykańskim.

Prędkość i miejsce

-NoDetailsParsing

Jeśli serwer DNS loguje pełne szczegóły pakietów, parser zamienia każdy blok szczegółów na JSON w kolumnie Details. To przydatne, ale też najdroższa część działania i powiększa CSV.

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

Kolumna pozostaje obecna, ale pusta; nagłówek szczegółów TCP/UDP jest dalej w Information. Na dziennikach bogatych w bloki szczegółów może to skrócić czas przetwarzania o 30–50%. Używaj, gdy wystarczy informacja na poziomie zapytań.

-CompressOutput

Spakowuje wygenerowane pliki CSV i usuwa nieskompresowane. dns.log daje dns.zip zamiast dns.csv.

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

CSV tego typu zwykle kompresuje się o 90% lub więcej, więc to niemal darmowa oszczędność miejsca na archiwa i przesyłanie plików po sieci.

-RemoveSourceFile

Usuwa plik źródłowy .log po udanej konwersji — plik jest usuwany tylko, jeśli wszystkie pliki wyjściowe zostały utworzone.

Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -CompressOutput -RemoveSourceFile

Siatki bezpieczeństwa

-SkipHeaderValidation

Domyślnie polecenie sprawdza, czy plik to faktycznie dziennik debugowania DNS Server, zanim go przetworzy. To łapie klasyczny błąd wskazania zadania na zły folder.

Wyłączaj tylko w naprawdę nietypowych przypadkach: ręcznie edytowane dzienniki, wyciągi po filtracji, formaty niestandardowe. Włączaj wszędzie indziej — to tanie i chroni przed literówką i górami śmieci.

-WhatIf i -Confirm

Polecenie obsługuje oba. -WhatIf to właściwy sposób, by zobaczyć, co zrobi nowe zadanie wsadowe:

Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
    Convert-DNSDebugLogFile -RemoveSourceFile -WhatIf

-Confirm pyta przed przetworzeniem każdego pliku, przed usunięciem pliku źródłowego i przed nadpisaniem istniejącego wyniku.

Aktywne dzienniki

Convert-DNSDebugLogFile może czytać plik, który DNS Server ma otwarty. Przydatne do doraźnego podglądu, co się dzieje teraz.

Składanie wszystkiego razem

Typowe wywołanie produkcyjne na kontrolerze domeny:

Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
    Sort-Object LastWriteTime -Descending |
    Select-Object -Skip 1 |
    Convert-DNSDebugLogFile `
        -ComputerName $env:COMPUTERNAME `
        -Delimiter ';' `
        -OutputType Both `
        -ContextFilter Packet `
        -OutputCulture 'sv-SE' `
        -CompressOutput

Czytaj: weź każdy obrócony dziennik oprócz aktywnego, zachowaj tylko ruch DNS, oznacz każdy wiersz nazwą serwera, zapisz znaczniki czasu w formacie maszynowym i zostaw spakowane archiwa. Pełna wersja do zadania zaplanowanego i GPO jest w przykładzie zbierania sterowanym GPO.