Parameter und Optionen
For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /de/docs/03-parameters-and-options/index.md.
Diese Seite erklärt die Optionen in einfacher Sprache und in der Reihenfolge, in der du sie typischerweise brauchst. Es ist ein Leitfaden, keine Spezifikation — die autoritative, immer aktuelle Parameterliste findest du in der Befehlsreferenz und in:
Get-Help Convert-DNSDebugLogFile -Full
Die Kurzfassung
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log"
Diese eine Zeile liefert dir schon ein sinnvolles Verhalten: sowohl Daten- als auch Statistikdateien, Semikolon als Trennzeichen, das Datumsformat deiner Maschine, Header-Validierung an, Quell-Log bleibt unverändert. Alles Weitere ist Feintuning.
| Option | Standard | Ändere sie, wenn |
|---|---|---|
-InputFile | (erforderlich) | immer |
-OutputFile | Eingabepfad mit .csv | du die Ausgabe woanders haben willst |
-Delimiter | ; | dein Verbraucher Komma, Tab oder Pipe erwartet |
-ComputerName | leer | du Logs von mehr als einem Server zusammenführst |
-OutputType | Both | du nur Daten oder nur Rollups möchtest |
-ContextFilter | All | du dich nur für den tatsächlichen DNS-Verkehr interessierst |
-InputCulture | aktuelle Kultur | das Log von einem Server mit anderem Gebietsschema stammt |
-OutputCulture | aktuelle Kultur | eine Maschine die CSV liest |
-NoDetailsParsing | aus | Durchsatz wichtiger als Paketdetails ist |
-CompressOutput | aus | du die Ergebnisse archivierst oder überträgst |
-RemoveSourceFile | aus | geplante Aufräumaktion und du vertraust der Ausgabe |
-SkipHeaderValidation | aus | die Datei gültig, aber der Header ungewöhnlich ist |
Eingabe und Ausgabe
-InputFile
Pfad zum zu konvertierenden Log. Akzeptiert ein Array und Pipeline-Eingaben — deshalb funktioniert das hier:
Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" | Convert-DNSDebugLogFile
Get-ChildItem gibt Objekte mit einer FullName-Eigenschaft aus, und -InputFile akzeptiert diese per Eigenschaftsname (Aliase sind u.a. FullName, Path, FilePath). Kein ForEach-Object nötig.
Lokale Pfade und SMB/UNC-Pfade funktionieren beide:
Convert-DNSDebugLogFile -InputFile "\\dc01\C$\Administration\Logs\DNSServer\dns.log"
Der Befehl kann auch ein Log öffnen, das der DNS-Server gerade offen hält. Siehe aktive Logs weiter unten, bevor du dich darauf verlässt.
-OutputFile
Ohne Angabe landet die CSV neben der Eingabedatei, gleicher Basisname, .csv-Erweiterung. Mit Angabe steuerst du das Ziel.
-OutputFile "D:\Processed\" bedeutet nicht „in diesen Ordner schreiben“. Gib den vollständigen Pfad inklusive Dateiname an: -OutputFile "D:\Processed\dns_data.csv".
Das heißt auch, dass -OutputFile bei vielen Dateien in der Pipeline keinen Sinn macht — jede Konvertierung würde in dieselbe Datei schreiben. Für Batchläufe lass es weg, damit jede Logdatei ihre eigene CSV erzeugt.
-Delimiter
Standard ist ein Semikolon, weil in Gebieten, wo das Komma Dezimaltrennzeichen ist, Excel das erwartet. Nutze -Delimiter "," für Tools und Datenbanken, die klassische CSV mit Komma erwarten, oder -Delimiter "`t" für Tabulator.
Was auch immer du wählst, benutze denselben Wert beim Import. Eine Abweichung ist die Hauptursache dafür, dass „alles in einer Spalte landet“.
Beschriftung und Filterung
-ComputerName
Füllt die Spalte ComputerName. Die Spalte gibt es so oder so; das hier gibt ihr nur einen Wert.
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ComputerName $env:COMPUTERNAME
Trotz des Namens (und der Aliase -Server / -DNSServer / -HostName) verbindet -ComputerName nicht mit irgendwas. Es gibt kein WinRM, keine Remote-Ausführung. Es schreibt nur ein Label in die Ausgabe. Um ein Remote-Log zu lesen, gib bei -InputFile einen UNC-Pfad an.
Setze es immer, wenn mehrere Server in einen Datensatz einspeisen — sonst kannst du später nicht mehr sagen, von welchem DC eine Zeile stammt.
-OutputType
CSV— nur die DatendateiStatistic— nur die zwei Aggregatdateien, keine ZeilendatenBoth— alle drei Dateien (Standard)
Statistic ist die schnelle, kleine Option, wenn du nur tägliche Trends brauchst. CSV ist richtig, wenn ein nachgelagertes System selbst aggregiert.
-ContextFilter
Ein DNS-Debug-Log mischt tatsächlichen Abfrageverkehr mit serverinternem Geplapper. -ContextFilter entscheidet, was in der Ausgabe bleibt.
# nur echter DNS-Verkehr
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter Packet
# Verkehr plus Serverereignisse, aber keine Diagnosehinweise
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter Packet, Event
| Wert | Enthält |
|---|---|
All | alles (Standard) |
Packet | DNS-Anfragen und Antworten — die Daten, die die meisten Analysen brauchen |
Event | Serverereignisse, z.B. „Der DNS-Server wurde gestartet“ |
Note | Diagnosehinweise und Warnungen, z.B. Socket-Fehler |
Weitere Kontexttypen (DSPoll, Init, Lookup, Recurse, Remote, Tombstone) erscheinen unter All.
Filterst du nur auf Event oder Note, werden nur DateTime, ThreadId, Context und Information gefüllt — die Protokollspalten bleiben leer, weil diese Einträge diese Infos nicht enthalten.
-ContextFilter Packet ist die übliche Wahl für Sicherheits- und Reporting-Pipelines: es entfernt den Lärm und verkleinert die Ausgabe spürbar.
Internationale Logs
Der DNS-Server schreibt Zeitstempel im Windows-Gebietsschema der Maschine, auf der er läuft. Ein deutscher DC schreibt 20.01.2026 23:00:16; ein US-Server schreibt 1/20/2026 11:00:16 PM. Wenn das Gebietsschema deines Arbeitsplatzrechners vom Server abweicht, klappt das Parsen nicht — oder schlimmer, Tag und Monat werden still vertauscht.
-InputCulture
Sag dem Parser, welches Gebietsschema das Quell-Log verwendet:
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns-berlin.log" -InputCulture 'de-DE'
| Kultur | Log-Zeitstempelformat |
|---|---|
de-DE | TT.MM.JJJJ HH:MM:SS |
en-US | M/T/JJJJ H:MM:SS AM/PM |
en-GB | TT/MM/JJJJ HH:MM:SS |
sv-SE | JJJJ-MM-TT HH:MM:SS |
Standard ist die Kultur der Sitzung, die den Befehl ausführt. In einer Umgebung mit gemischten Gebietsschemata solltest du sie explizit setzen, statt dich auf den Standard zu verlassen — und denk daran, dass ein geplanter Task, der als SYSTEM läuft, vielleicht nicht die Kultur hat, mit der du interaktiv getestet hast.
-OutputCulture
Steuert, wie Zeitstempel in die CSV geschrieben werden:
# ISO-ähnliche Ausgabe, die SQL Server, Power BI und pandas alle verstehen
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputCulture 'sv-SE'
# gleicher Effekt, explizite Invariant-Kultur
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" `
-OutputCulture ([System.Globalization.CultureInfo]::InvariantCulture)
Faustregel: Wenn ein Mensch die Datei in Excel öffnet, nutze die lokale Kultur. Wenn eine Maschine sie liest, verwende sv-SE oder die Invariant-Kultur und mach dir keine Sorgen um regionale Einstellungen beim Import.
Die beiden Parameter sind unabhängig — du kannst ein schwedisches Log lesen und US-formatierten Output schreiben.
Geschwindigkeit und Speicher
-NoDetailsParsing
Wenn der DNS-Server volle Paketdetails protokolliert, wandelt der Parser jeden Detailblock in JSON in der Spalte Details um. Das ist nützlich, aber auch der teuerste Teil des Laufs und bläht die CSV auf.
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -NoDetailsParsing
Die Spalte bleibt vorhanden, aber leer; die TCP/UDP-Detail-Headerzeile ist weiterhin in Information verfügbar. Bei Logs mit vielen Detailblöcken kann das die Verarbeitungszeit um 30–50 % reduzieren. Nutze es, wenn Informationen auf Abfrageebene ausreichen.
-CompressOutput
Komprimiert die erzeugten CSV-Dateien und löscht die unkomprimierten. dns.log erzeugt dns.zip statt dns.csv.
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -CompressOutput
CSV dieser Art komprimiert typischerweise um 90 % oder mehr, das spart also quasi kostenlosen Speicherplatz für Archive und beim Versand über das Netzwerk.
-RemoveSourceFile
Löscht die Quell-.log nach erfolgreicher Konvertierung — die Logdatei wird nur gelöscht, wenn alle Ausgabedateien erstellt wurden.
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -CompressOutput -RemoveSourceFile
Es gibt hier keinen Papierkorb. Prüfe deine Ausgabe an echten Logs, bevor du das in einem geplanten Job aktivierst, und zeige niemals auf eine aktive Logdatei.
Der Befehl verweigert absichtlich die Kombination von -RemoveSourceFile mit -SkipHeaderValidation, damit du keine Datei löschen kannst, die nie als DNS-Log bestätigt wurde.
Sicherheitsnetze
-SkipHeaderValidation
Standardmäßig prüft der Befehl, ob die Datei wirklich ein DNS-Server-Debug-Log ist, bevor er es parst. Das fängt den klassischen Fehler ab, den Job auf den falschen Ordner zu zeigen.
Schalte es nur bei wirklich ungewöhnlichen Fällen aus: handbearbeitete Logs, vorgefilterte Ausschnitte, benutzerdefinierte Formate. Lass es sonst an — es kostet kaum Leistung und verhindert, dass ein Tippfehler in einem Haufen Müll endet.
-WhatIf und -Confirm
Der Befehl unterstützt beides. -WhatIf ist der richtige Weg, um zu sehen, was ein neuer Batch-Job anfasst:
Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
Convert-DNSDebugLogFile -RemoveSourceFile -WhatIf
-Confirm fragt vor der Verarbeitung jeder Datei, vor dem Löschen einer Quelldatei und vor dem Überschreiben vorhandener Ausgaben nach.
Aktive Logs
Convert-DNSDebugLogFile kann eine Datei lesen, die der DNS-Server gerade offen hat. Praktisch für einen Ad-hoc-Blick auf das, was gerade passiert.
Ein aktives Log ändert sich während des Lesens. Die Ausgabe kann Einträge vermissen, die während der Konvertierung geschrieben wurden, und der letzte Datensatz kann abgeschnitten sein. Ein erneuter Lauf liefert ein anderes Ergebnis.
Für reproduzierbare Ausgaben aktiviere das Log-Rollover auf dem DNS-Server und konvertiere nur geschlossene, rotierte Dateien — zum Beispiel indem du die neueste überspringst:
Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
Sort-Object LastWriteTime -Descending |
Select-Object -Skip 1 |
Convert-DNSDebugLogFile -ComputerName $env:COMPUTERNAME
Zusammengesetzt
Ein typischer Produktionsaufruf auf einem Domänencontroller:
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
Gelesen heißt das: Nimm jedes rotierte Log außer dem aktiven, behalte nur DNS-Verkehr, versehe jede Zeile mit dem Servernamen, schreibe maschinenlesbare Zeitstempel und hinterlasse komprimierte Archive. Die vollständige Version für geplante Tasks und Gruppenrichtlinien findest du im GPO-gesteuerten Sammelbeispiel.