To wielostronicowy widok tej sekcji do wydrukowania. Kliknij aby wydrukować.

Wróć do zwykłego widoku tej strony.

Referencja poleceń modułu

Tutaj znajdziesz referencję wszystkich poleceń w module. Ta referencja ma pomóc Ci szybko znaleźć potrzebne polecenie i zrozumieć, jak skutecznie z niego korzystać.

Klikając na polecenie, zostaniesz przeniesiony do szczegółowej strony zawierającej kompleksowe informacje o poleceniu, w tym jego składnię, parametry, przykłady oraz dodatkowe uwagi lub wskazówki dotyczące użytkowania.

1 - Convert-DNSDebugLogFile

SYNOPSIS

Przekształca dzienniki debugowania serwera DNS Windows do ustrukturyzowanego formatu CSV do analizy i raportowania.

SYNTAX

__AllParameterSets

Convert-DNSDebugLogFile [-InputFile] <string[]> [[-OutputFile] <string>] [[-Delimiter] <string>]
 [[-ComputerName] <string>] [[-OutputType] <string>] [[-ContextFilter] <string[]>]
 [[-InputCulture] <cultureinfo>] [[-OutputCulture] <cultureinfo>] [-SkipHeaderValidation]
 [-RemoveSourceFile] [-CompressOutput] [-NoDetailsParsing] [-WhatIf] [-Confirm] [<CommonParameters>]

ALIASES

Ten cmdlet ma następujące aliasy,

DESCRIPTION

Konwertuje pliki dzienników debugowania serwera DNS Windows na ustrukturyzowane dane CSV, które można analizować w Excelu, Power BI, bazach danych SQL lub narzędziach SIEM. Przeznaczony do analizy bezpieczeństwa, monitorowania wydajności, rozwiązywania problemów i raportowania zgodności.

Cmdlet analizuje dzienniki debugowania DNS i zapisuje spójny wynik CSV do analizy. Wynik CSV zawiera 18 kolumn, w tym kolumnę Information z tekstem zdarzenia/diagnostycznym, opcjonalną kolumnę JSON Details dla bloków szczegółów pakietu oraz zawsze obecna kolumnę ComputerName (pusta, jeśli nie określono).

KLUCZOWE CECHY:

  • Przetwarzanie strumieniowe unika ładowania całego pliku do pamięci (odpowiednie dla bardzo dużych dzienników)
  • Wysokowydajne parsowanie zoptymalizowane pod kątem dużych plików (100MB+)
  • Konfigurowalny separator CSV (domyślnie średnik)
  • Opcjonalne podsumowania statystyczne z agregowanymi metrykami
  • Filtrowanie kontekstu (Pakiet, Zdarzenie, Notatka i dodatkowe konteksty) do skupienia się na określonych typach wpisów dziennika
  • Obsługa kultury przy parsowaniu i formatowaniu dat dla serwerów międzynarodowych
  • Obsługa potoku do wsadowego przetwarzania wielu plików
  • Opcjonalna kompresja plików wyjściowych (format ZIP)
  • Opcjonalne automatyczne usuwanie plików źródłowych po przetworzeniu
  • Walidacja nagłówka zapewniająca integralność danych

FORMAT WYJŚCIA: Kolumna ComputerName jest zawsze dołączana na końcu każdego rekordu. Jeśli parametr -ComputerName nie jest określony, kolumna pozostanie pusta. Zapewnia to spójną strukturę wyjścia dla scenariuszy konsolidacji wielu serwerów.

WYDAJNOŚĆ: Zoptymalizowane przy użyciu StreamReader/StreamWriter z buforami 64KB, przetwarzanie strumieniowe dla efektywnego zarządzania pamięcią dużych plików, operacje na łańcuchach zamiast regex, ręczna generacja CSV oraz efektywne zbieranie statystyk oparte na hashtable.

KOMPATYBILNOŚĆ:

  • PowerShell 5.1+ (edycje Desktop i Core)
  • Windows Server 2016+
  • Format dzienników serwera DNS od 2012 R2 do 2025

EXAMPLES

PRZYKŁAD 1

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

Konwertuje dziennik debugowania DNS z domyślnymi ustawieniami (zarówno pliki danych, jak i statystyk z separatorem średnik). Wynik:

  • C:\Logs\dns.csv
  • C:\Logs\dns_Statistic.csv
  • C:\Logs\dns_PacketStatistic.csv

PRZYKŁAD 2

PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputType CSV

Generuje tylko plik danych bez statystyk. Wynik: C:\Logs\dns.csv

PRZYKŁAD 3

PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputType Statistic

Generuje tylko pliki statystyk z agregowanymi metrykami. Wynik:

  • C:\Logs\dns_Statistic.csv
  • C:\Logs\dns_PacketStatistic.csv

PRZYKŁAD 4

PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputFile "C:\Output\parsed.csv"

Konwertuje dziennik do niestandardowej lokalizacji wyjściowej. Wynik: C:\Output\parsed.csv

PRZYKŁAD 5

PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -Delimiter "," -ComputerName "DNS01" -OutputType Both

Konwertuje z separatorem przecinka i dodaje kolumnę ComputerName z wartością “DNS01”. Wynik:

  • C:\Logs\dns.csv
  • C:\Logs\dns_Statistic.csv
  • C:\Logs\dns_PacketStatistic.csv

PRZYKŁAD 6

PS C:\> Get-ChildItem "C:\Logs\*.log" | Convert-DNSDebugLogFile -OutputType Both

Wsadowe przetwarzanie wielu plików dzienników debugowania DNS przez potok. Wynik: Dla każdego pliku .log generuje pliki .csv i _statistic.csv

PRZYKŁAD 7

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

Konwertuje i kompresuje wynik do archiwum ZIP. Wynik: C:\Logs\dns.zip (zawierający dns.csv + pliki statystyk)

PRZYKŁAD 8

PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -RemoveSourceFile -Verbose

Konwertuje dziennik i usuwa plik źródłowy po pomyślnym przetworzeniu. Szczegółowe informacje potwierdzają usunięcie pliku.

PRZYKŁAD 9

PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -InputCulture 'de-DE' -OutputCulture 'en-US'

Parsuje niemiecki format daty (DD.MM.YYYY) i wyprowadza w formacie amerykańskim (MM/DD/YYYY). Używaj podczas przetwarzania dzienników z serwerów o różnych ustawieniach regionalnych.

PRZYKŁAD 10

PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter 'Packet'

Konwertuje tylko wpisy pakietów zapytań/odpowiedzi DNS, wykluczając wpisy EVENT i Note. Używaj, aby skupić analizę na rzeczywistym ruchu DNS.

PRZYKŁAD 11

PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter 'Packet','Event'

Konwertuje zarówno pakiety zapytań/odpowiedzi DNS, jak i zdarzenia serwera, wykluczając wpisy Note i inne. Używaj do analizy ruchu DNS wraz z kontekstem zdarzeń serwera.

PRZYKŁAD 12

PS C:\> Get-ChildItem "C:\Logs\*.log" | Convert-DNSDebugLogFile -RemoveSourceFile -CompressOutput

Automatyczne archiwizowanie dzienników: przetwarza wszystkie dzienniki, kompresuje wynik i usuwa pliki źródłowe. Idealne do zaplanowanych potoków przetwarzania dzienników.

PRZYKŁAD 13

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

Przetwarza duży plik dziennika z wyłączonym parsowaniem szczegółów dla maksymalnej wydajności. Bloki szczegółów PACKET są pomijane, kolumna Details pozostaje pusta. Używaj, gdy przetwarzasz bardzo duże pliki i nie potrzebujesz szczegółowej analizy struktury pakietów.

PARAMETERS

-CompressOutput

Kompresuje pliki CSV wyjściowe do archiwum ZIP po ich utworzeniu.

Tworzy plik .zip zawierający wygenerowane pliki CSV, a następnie usuwa nieskompresowane CSV. Plik ZIP jest tworzony w tym samym katalogu co plik wyjściowy CSV o tej samej nazwie bazowej.

Korzyści:

  • Znaczne zmniejszenie zajętości dysku (pliki CSV zwykle kompresują się powyżej 90%)
  • Ułatwia zarządzanie plikami i archiwizację
  • Odpowiednie do długoterminowego przechowywania

Przykład: Plik wejściowy ‘dns.log’ generuje ‘dns.csv’, który jest kompresowany do ‘dns.zip’, a następnie ‘dns.csv’ jest usuwany.

Type: SwitchParameter
DefaultValue: False
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: Named
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-ComputerName

Określa wartość dla kolumny ComputerName w wyjściowym pliku CSV. Kolumna ComputerName jest zawsze obecna w wyjściu - jeśli parametr nie jest określony, kolumna pozostanie pusta.

Używaj tego podczas konsolidacji dzienników z wielu serwerów DNS, aby zidentyfikować serwer źródłowy w łączonych zestawach danych.

Uwaga: To NIE jest parametr zdalnego wywołania. Oznacza tylko etykietę wyjścia. Jeśli wskażesz -InputFile na ścieżkę UNC, plik jest czytany z tej ścieżki (nie jest wykonywane WinRM/zdalne wykonanie).

Type: String
DefaultValue: ''
SupportsWildcards: false
Aliases:
- Server
- DNSServer
- HostName
ParameterSets:
- Name: (All)
  Position: 3
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-Confirm

Pyta o potwierdzenie przed uruchomieniem cmdletu.

Jeśli określony, pyta o potwierdzenie przed:

  • Przetwarzaniem każdego pliku dziennika debugowania DNS
  • Usuwaniem plików źródłowych (gdy określono -RemoveSourceFile)
  • Nadpisywaniem istniejących plików wyjściowych

Przydatne podczas interaktywnego przetwarzania, gdy chcesz kontrolować, które pliki są przetwarzane.

Type: SwitchParameter
DefaultValue: ''
SupportsWildcards: false
Aliases:
- cf
ParameterSets:
- Name: (All)
  Position: Named
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-ContextFilter

Filtruje, które typy wpisów dziennika mają być uwzględnione w wyjściu. Akceptuje pojedyncze lub wiele wartości.

Dzienniki debugowania DNS zawierają różne typy kontekstu:

  • PACKET: informacje o pakietach zapytań i odpowiedzi DNS (dane podstawowe)
  • EVENT: zdarzenia serwera DNS (np. “Serwer DNS został uruchomiony.”)
  • Note: notatki diagnostyczne i ostrzeżenia (np. błędy gniazda, stany wewnętrzne)
  • DSPoll, Init, Lookup, Recurse, Remote, Tombstone: dodatkowe typy kontekstu

Ważne wartości:

  • ‘All’: uwzględnij wszystkie typy kontekstu (domyślnie)
  • ‘Packet’: uwzględnij tylko wpisy PACKET (zapytania/odpowiedzi DNS)
  • ‘Event’: uwzględnij tylko wpisy EVENT (zdarzenia serwera)
  • ‘Note’: uwzględnij tylko wpisy Note (informacje diagnostyczne)
  • Dowolna kombinacja: określ wiele wartości, aby uwzględnić konkretne typy kontekstu

Domyślnie: All

Przykłady:

  • ‘Packet’ filtruje tylko ruch DNS
  • ‘Packet’,‘Event’ uwzględnia zarówno ruch DNS, jak i zdarzenia serwera
  • ‘Note’,‘Event’ uwzględnia notatki diagnostyczne i zdarzenia serwera

Uwaga: Przy filtrowaniu do ‘Event’ lub ‘Note’ tylko kolumny DateTime, ThreadId, Context i Information zawierają dane. Pozostałe kolumny (Protocol, ClientIP itd.) będą puste.

Type: String[]
DefaultValue: "@('All')"
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: 5
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-Delimiter

Określa znak separatora dla wyjścia CSV.

Domyślnie: średnik (;)

Popularne alternatywy: przecinek (,), tabulator (`t), pionowa kreska (|)

Używaj średnika w regionach, gdzie przecinek jest separatorem dziesiętnym (Europa). Używaj przecinka dla standardowych narzędzi CSV i baz danych oczekujących wartości rozdzielonych przecinkiem.

Type: String
DefaultValue: ;
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: 2
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-InputCulture

Określa kulturę/lokalizację do parsowania wartości daty/czasu w dzienniku debugowania DNS.

Dzienniki debugowania serwera DNS używają formatu daty zgodnego z lokalizacją Windows na serwerze, gdzie dziennik został wygenerowany. Używaj tego parametru podczas przetwarzania dzienników z serwerów o różnych ustawieniach regionalnych.

Domyślnie: bieżąca kultura

Popularne przykłady:

  • ‘de-DE’ lub ‘de-AT’: format niemiecki (DD.MM.YYYY lub DD/MM/YYYY)
  • ’en-US’: format amerykański (MM/DD/YYYY z AM/PM)
  • ’en-GB’: format brytyjski (DD/MM/YYYY z czasem 24-godzinnym)
  • ‘sv-SE’: format szwedzki/ISO (YYYY-MM-DD)
Type: CultureInfo
DefaultValue: '[System.Globalization.CultureInfo]::CurrentCulture'
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: 6
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-InputFile

Określa ścieżkę do pliku dziennika debugowania DNS do parsowania. Obsługuje tablice do przetwarzania wielu plików.

Akceptuje dane z potoku z Get-ChildItem lub innych cmdletów generujących pliki.

Type: String[]
DefaultValue: ''
SupportsWildcards: false
Aliases:
- FullName
- FilePath
- InputPath
- File
- Path
ParameterSets:
- Name: (All)
  Position: 0
  IsRequired: true
  ValueFromPipeline: true
  ValueFromPipelineByPropertyName: true
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-NoDetailsParsing

Pomija parsowanie bloków szczegółów PACKET do ustrukturyzowanego formatu JSON.

Jeśli określony, rekordy PACKET z blokami szczegółów będą miały linię informacji TCP/UDP w kolumnie Information, ale kolumna Details pozostanie pusta. Znacząco poprawia to wydajność przetwarzania dużych plików dziennika, gdy nie jest potrzebna szczegółowa analiza struktury pakietów.

Używaj tego przełącznika, gdy:

  • Przetwarzasz bardzo duże pliki dziennika (100MB+) i potrzebujesz tylko podstawowych informacji o zapytaniach
  • Struktura szczegółów (flagi wiadomości, sekcje DNS) nie jest wymagana do analizy
  • Maksymalizacja szybkości parsowania jest ważniejsza niż kompletność danych

Wpływ na wydajność: Może poprawić szybkość przetwarzania o 30-50% dla dzienników z wieloma blokami szczegółów PACKET.

Type: SwitchParameter
DefaultValue: False
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: Named
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-OutputCulture

Określa kulturę/lokalizację do formatowania wartości daty/czasu w wyjściowych plikach CSV.

Kontroluje sposób zapisu wartości DateTime do CSV. Używaj tego, gdy pliki CSV będą wykorzystywane przez aplikacje lub systemy o określonych ustawieniach regionalnych.

Domyślnie: bieżąca kultura

Popularne przykłady:

  • ’en-US’: format amerykański (MM/DD/YYYY)
  • ‘de-DE’: format niemiecki (DD.MM.YYYY)
  • ‘sv-SE’ lub InvariantCulture: format ISO (YYYY-MM-DD) dla maksymalnej kompatybilności
Type: CultureInfo
DefaultValue: '[System.Globalization.CultureInfo]::CurrentCulture'
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: 7
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-OutputFile

Określa ścieżkę do pliku wyjściowego CSV. Jeśli nie określono, używa nazwy pliku wejściowego z rozszerzeniem .csv w tym samym katalogu co plik wejściowy.

Ważne: musi to być ścieżka do pliku, nie katalog. Jeśli chcesz użyć katalogu pliku wejściowego z niestandardową nazwą, podaj pełną ścieżkę wraz z nazwą pliku.

Type: String
DefaultValue: ''
SupportsWildcards: false
Aliases:
- Output
- Destination
- OutFile
- OutputPath
ParameterSets:
- Name: (All)
  Position: 1
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-OutputType

Określa typ generowanego wyjścia.

Ważne wartości:

  • ‘CSV’: generuje tylko plik danych ze wszystkimi przetworzonymi wpisami dziennika
  • ‘Statistic’: generuje tylko pliki statystyk z agregowanymi metrykami
  • ‘Both’: generuje zarówno pliki danych, jak i statystyk (domyślnie)

Domyślnie: Both

Gdy generowane są statystyki, tworzone są dwa oddzielne pliki:

  • ‘_Statistic.csv’: podsumowanie liczby wpisów według typu kontekstu na dzień (Data, Kontekst, Liczba, ComputerName)
  • ‘_PacketStatistic.csv’: szczegółowe liczniki PACKET na dzień według IP klienta, protokołu, kierunku i typu zapytania (Data, ClientIP, Protokół, Kierunek, TypPytania, Liczba, ComputerName)
Type: String
DefaultValue: Both
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: 4
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-RemoveSourceFile

Usuwa źródłowy plik dziennika debugowania DNS po pomyślnym przetworzeniu.

Używaj tego w automatycznych potokach przetwarzania dzienników lub do zarządzania miejscem na dysku. Plik źródłowy jest usuwany tylko, jeśli przetwarzanie zakończy się sukcesem i wszystkie pliki wyjściowe zostaną utworzone.

Bezpieczeństwo: Nie można używać z -SkipHeaderValidation, aby zapobiec przypadkowemu usunięciu nieprawidłowych plików.

Ostrzeżenie: Pliki źródłowe są trwale usuwane. Upewnij się, że pliki wyjściowe są poprawne przed użyciem tej opcji.

Type: SwitchParameter
DefaultValue: False
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: Named
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-SkipHeaderValidation

Pomija sprawdzanie poprawności nagłówka dziennika debugowania DNS.

Domyślnie cmdlet weryfikuje, czy pliki wejściowe mają poprawny nagłówek dziennika debugowania DNS. Użyj tego przełącznika, aby przetwarzać pliki bez walidacji, co może być przydatne w przypadku:

  • zmodyfikowanych lub niestandardowych formatów dzienników
  • rozwiązywania problemów z walidacją
  • niestandardowych lub wstępnie przetworzonych dzienników

Ostrzeżenie: Może powodować błędy przetwarzania, jeśli plik nie jest prawidłowym dziennikiem DNS.

Type: SwitchParameter
DefaultValue: False
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: Named
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

-WhatIf

Pokazuje, co by się stało, gdyby cmdlet został uruchomiony. Cmdlet nie jest wykonywany.

Jeśli określony, wyświetla szczegółowe informacje o operacjach, które zostałyby wykonane, bez faktycznego ich wykonania. Przydatne do:

  • podglądu, które pliki zostałyby przetworzone
  • weryfikacji ścieżek plików wyjściowych przed przetwarzaniem
  • testowania skryptów przed uruchomieniem w środowisku produkcyjnym
Type: SwitchParameter
DefaultValue: ''
SupportsWildcards: false
Aliases:
- wi
ParameterSets:
- Name: (All)
  Position: Named
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''

CommonParameters

Ten cmdlet obsługuje parametry wspólne: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Więcej informacji znajdziesz w about_CommonParameters.

INPUTS

System.String[]

NOTES

Wersja : 1.7.1.1 Autor : Andi Bellstedt, Copilot Data : 2026-01-26 Słowa kluczowe : Microsoft Windows Server, DNSServer, DNS, DebugLog, LogParser