Formaty wyjściowe
For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /pl/docs/02-output-formats/index.md.
Convert-DNSDebugLogFile generuje do trzech plików na każdy plik dziennika wejściowego:
| Plik | Zawiera | Tworzony gdy |
|---|---|---|
<name>.csv | Jeden wiersz na wpis w dzienniku | -OutputType CSV lub Both |
<name>_Statistic.csv | Dzienne zliczenie rekordów według kontekstu | -OutputType Statistic lub Both |
<name>_PacketStatistic.csv | Dzienne zliczenie zapytań według klienta, protokołu, kierunku i typu rekordu | -OutputType Statistic lub Both |
Both jest ustawieniem domyślnym. Wyniki trafiają obok pliku wejściowego, chyba że ustawisz -OutputFile.
Przykładowe pliki podlinkowane na tej stronie to rzeczywiste wyniki konwersji, a nie makiety. Pobierz jeden i otwórz go w Excelu, zanim zdecydujesz się na projekt potoku.
Plik danych CSV
Przykładowy wynik:
| Lokalizacja | Kolumna Szczegóły | Pliki |
|---|---|---|
| en-US | nieuzupełniona | WithComputerName, NoComputerName |
| de-DE | nieuzupełniona | WithComputerName, NoComputerName |
| de-DE | uzupełniona | WithComputerName, NoComputerName |
Dwa wiersze z rzeczywistej konwersji — zapytanie DNS i notatka wewnętrzna serwera:
DateTime;ThreadId;Context;PacketId;Protocol;Direction;ClientIP;Xid;Type;Opcode;FlagsHex;FlagsChar;ResponseCode;QuestionType;QuestionName;Information;Details;ComputerName
2026-01-20 23:00:16;0FE0;Packet;000002C53117D990;UDP;Rcv;10.0.0.2;c049;Query;Standard;0001;RecursionDesired;NOERROR;A;"odc.officeapps.live.com";"";"";dc01
2026-01-20 23:00:16;DF0;Note;;;;;;;;;;;;"";"got GQCS failure on a dead socket context status=995, socket=904";"";dc01
Kolumny
Zawsze 18 kolumn, zawsze w tej kolejności:
| # | Kolumna | Znaczenie | Typowe zastosowanie |
|---|---|---|---|
| 1 | DateTime | Znacznik czasu wpisu | Filtrowanie po czasie, łączenie z innymi dziennikami |
| 2 | ThreadId | Wątek roboczy serwera DNS | Rzadko potrzebne; przydatne przy korelowaniu problemów wewnętrznych serwera |
| 3 | Context | Rodzaj wpisu: Packet, Event, Note, DSPoll, Init, Lookup, Recurse, Remote, Tombstone | Pierwszy filtr, który zastosujesz — Packet to rzeczywisty ruch DNS |
| 4 | PacketId | Wewnętrzny identyfikator pakietu | Parowanie zapytania z odpowiedzią |
| 5 | Protocol | UDP lub TCP | Skoki TCP mogą wskazywać na duże odpowiedzi lub transfery stref |
| 6 | Direction | Rcv (zapytanie przyszło) lub Snd (serwer odpowiedział) | Oddzielenie wolumenu zapytań od odpowiedzi |
| 7 | ClientIP | Adres hosta zapytującego | Analiza najaktywniejszych, zakres incydentu |
| 8 | Xid | ID transakcji DNS (hex) | Dopasowanie zapytania i odpowiedzi |
| 9 | Type | Query lub Response | |
| 10 | Opcode | Standard, Notify, Update, Unknown | Oddziela dynamiczne aktualizacje i powiadomienia stref od normalnych zapytań |
| 11 | FlagsHex | Surowe flagi nagłówka (hex) | Do głębokiej analizy protokołu |
| 12 | FlagsChar | Zdekodowane flagi: Authoritative, Truncated, RecursionDesired, RecursionAvailable | Czytelna wersja powyższych |
| 13 | ResponseCode | NOERROR, NXDOMAIN, SERVFAIL, … | Raportowanie błędów, poszukiwanie niepowodzeń rozwiązywania |
| 14 | QuestionType | Typ rekordu: A, AAAA, MX, PTR, TXT, … | Wolumen TXT to klasyczny wskaźnik tunelowania |
| 15 | QuestionName | Zapytana nazwa jako normalny FQDN | Dopasowanie wywiadu zagrożeń, raporty top-domen |
| 16 | Information | Wolny tekst dla wpisów Event / Note; dla bloków szczegółów Packet linia nagłówka TCP/UDP | Odczyt komunikatów serwera |
| 17 | Details | Reprezentacja JSON bloku szczegółów Packet; pusta w innych przypadkach | Pełna inspekcja pakietu bez powrotu do surowego dziennika |
| 18 | ComputerName | Serwer źródłowy, z -ComputerName | Utrzymanie przypisania zbiorów danych z wielu serwerów |
Dwie rzeczy do zaplanowania:
- Nie każda kolumna jest wypełniona w każdym wierszu. Tylko wpisy
Packetmają IP klienta, nazwę zapytania i kod odpowiedzi. WierszeNoteiEventzawierają swój tekst wInformationi pozostawiają kolumny protokołu puste. Zaprojektuj schemat bazy danych i filtry w panelu odpowiednio. ComputerNamejest zawsze ostatnią kolumną, nawet jeśli nie używasz-ComputerName. Wtedy jest po prostu pusta. To utrzymuje identyczny układ we wszystkich serwerach, więc możesz łączyć pliki z wielu serwerów DNS bez kroku mapowania kolumn.
Kolumna Szczegóły
Bloki szczegółów pojawiają się tylko, jeśli serwer DNS jest skonfigurowany do logowania pełnych szczegółów pakietów. Gdy istnieją, parser konwertuje je do pojedynczej wartości JSON, aby wiersz pozostał jednoliniowy:
{
"Socket": "848",
"Remote": "addr 10.10.0.11, port 60580",
"Buflength": "0x10000 (65536)",
"Message": {
"XID": "0x0001",
"OPCODE": "0 (QUERY)",
"RCODE": "0 (NOERROR)",
"QUESTION": [ { "Name": "berlin.de", "QTYPE": "A (1)", "QCLASS": "1" } ],
"ANSWER": []
}
}
Parsowanie tych bloków kosztuje czas i znacznie powiększa plik CSV. Jeśli ich nie potrzebujesz, użyj -NoDetailsParsing — kolumna pozostaje obecna, ale pusta, a konwersja jest szybsza. Zobacz Wydajność.
Pliki statystyk
Statystyki to dzienne agregaty. Używaj ich, gdy chcesz trend lub podsumowanie i nie chcesz przenosić pełnego zestawu rekordów — są o rzędy wielkości mniejsze niż plik danych.
Statystyki kontekstu (*_Statistic.csv)
Odpowiadają na pytanie: ile jakiego rodzaju aktywności zdarzyło się danego dnia?
Date;Context;Count;ComputerName
2026-01-20;Event;2;dc01
2026-01-20;Note;2;dc01
2026-01-20;Packet;12;dc01
| Kolumna | Znaczenie |
|---|---|
Date | Dzień, zawsze yyyy-MM-dd |
Context | Nazwa kontekstu (Packet, Event, Note, …) |
Count | Liczba rekordów tego kontekstu w danym dniu |
ComputerName | Serwer źródłowy |
Przykładowe pliki: en-US WithComputerName, en-US NoComputerName, de-DE WithComputerName, de-DE NoComputerName
Statystyki pakietów (*_PacketStatistic.csv)
Odpowiadają na pytanie: kto zapytał o co, jak często, danego dnia?
Date;ClientIP;Protocol;Direction;QuestionType;Count;ComputerName
2026-01-20;10.0.0.1;UDP;Rcv;A;3;dc01
2026-01-20;10.0.0.1;UDP;Snd;A;3;dc01
2026-01-20;10.0.0.2;UDP;Rcv;A;3;dc01
| Kolumna | Znaczenie |
|---|---|
Date | Dzień, zawsze yyyy-MM-dd |
ClientIP | Host zapytujący |
Protocol | UDP lub TCP |
Direction | Rcv lub Snd |
QuestionType | Typ rekordu DNS |
Count | Liczba pasujących pakietów tego dnia |
ComputerName | Serwer źródłowy |
Przykładowe pliki: en-US WithComputerName, en-US NoComputerName, de-DE WithComputerName, de-DE NoComputerName
Count to liczba rekordów w tej dziennej grupie. Klient, który zapytał o tę samą nazwę 500 razy, wnosi 500, a nie 1. Jeśli liczba wydaje się zbyt wysoka, zwykle to jest powód.
Separator i format daty
Oba typy wyjścia respektują -Delimiter (domyślnie ;) i -OutputCulture. Dla wszystkiego, co będzie importowane przez maszynę, używaj znaczników czasu w stylu ISO:
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputCulture 'sv-SE'
To daje 2026-01-20 23:00:16, które SQL Server, Power BI i pandas odczytują bez wskazówki formatu. Szczegóły w Parametry i opcje.