# Convert-DNSDebugLogFile

LLMS index: [llms.txt](/llms.txt)

---

<!-- This file is auto-generated using PlatyPS + HUGO Workflow automation. Avoid editing directly! Original Front-Matter:
date: 2026-07-24
document type: cmdlet
external help file: DNSServer.DebugLogParser-Help.xml
flagTranslation: Primary
HelpUri: https://github.com/AndiBellstedt/DNSServer.DebugLogParser
Locale: en-US
Module Name: DNSServer.DebugLogParser
ms.date: 07/24/2026
PlatyPS schema version: 2024-05-01
title: Convert-DNSDebugLogFile
type: docs
-->



## SYNOPSIS

Transforme les journaux de débogage DNS de Windows Server en un format CSV structuré pour analyse et rapports.

## 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]
```

## ALIASES

Cette cmdlet possède les alias suivants,

## DESCRIPTION

Convertit les fichiers journaux de débogage DNS de Windows Server en données CSV structurées pouvant être analysées
dans Excel, Power BI, bases de données SQL ou outils SIEM.
Conçu pour l'analyse de sécurité, la
surveillance des performances, le dépannage et les rapports de conformité.

La cmdlet analyse les journaux de débogage DNS et génère une sortie CSV cohérente pour l'analyse.
La sortie CSV contient 18 colonnes, dont une colonne `Information` pour le texte événementiel/diagnostique,
une colonne JSON optionnelle `Details` pour les blocs de détails des paquets, et une colonne `ComputerName`
toujours présente (vide sauf si spécifiée).

FONCTIONNALITÉS CLÉS :
- Traitement en streaming évitant de charger le fichier complet en mémoire (adapté aux très gros journaux)
- Analyse haute performance optimisée pour les gros fichiers (100 Mo+)
- Délimiteur CSV personnalisable (par défaut : point-virgule)
- Résumés statistiques optionnels avec métriques agrégées
- Filtrage contextuel (Packet, Event, Note et autres contextes) pour cibler certains types d’entrées
- Analyse et formatage des dates sensibles à la culture pour serveurs internationaux
- Support du pipeline pour traitement par lots de plusieurs fichiers
- Compression optionnelle des fichiers de sortie (format ZIP)
- Suppression automatique optionnelle des fichiers sources après traitement
- Validation des en-têtes pour garantir l’intégrité des données

FORMAT DE SORTIE :
La colonne ComputerName est toujours incluse à la fin de chaque enregistrement.
Si le paramètre -ComputerName
n’est pas spécifié, la colonne restera vide.
Cela garantit une structure de sortie cohérente
pour les scénarios de consolidation multi-serveurs.

PERFORMANCE :
Optimisé avec StreamReader/StreamWriter et tampons de 64 Ko, traitement en streaming pour
une gestion mémoire efficace des gros fichiers, opérations sur chaînes au lieu de regex, génération manuelle du CSV,
et collecte efficace des statistiques via tables de hachage.

COMPATIBILITÉ :
- PowerShell 5.1+ (éditions Desktop et Core)
- Windows Server 2016+
- Formats de journaux DNS Server 2012 R2 à 2025

## EXAMPLES

### EXEMPLE 1

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log"
```

Convertit le journal de débogage DNS avec les paramètres par défaut (fichiers de données et statistiques avec délimiteur point-virgule).
Sortie :
- C:\Logs\dns.csv
- C:\Logs\dns_Statistic.csv
- C:\Logs\dns_PacketStatistic.csv

### EXEMPLE 2

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputType CSV
```

Génère uniquement le fichier de données sans statistiques.
Sortie : C:\Logs\dns.csv

### EXEMPLE 3

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputType Statistic
```

Génère uniquement les fichiers statistiques avec métriques agrégées.
Sortie :
- C:\Logs\dns_Statistic.csv
- C:\Logs\dns_PacketStatistic.csv

### EXEMPLE 4

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputFile "C:\Output\parsed.csv"
```

Convertit le journal vers un emplacement de sortie personnalisé.
Sortie : C:\Output\parsed.csv

### EXEMPLE 5

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -Delimiter "," -ComputerName "DNS01" -OutputType Both
```

Convertit avec délimiteur virgule et ajoute la colonne ComputerName avec la valeur "DNS01".
Sortie :
- C:\Logs\dns.csv
- C:\Logs\dns_Statistic.csv
- C:\Logs\dns_PacketStatistic.csv

### EXEMPLE 6

```powershell
PS C:\> Get-ChildItem "C:\Logs\*.log" | Convert-DNSDebugLogFile -OutputType Both
```

Traitement par lots de plusieurs fichiers journaux DNS via pipeline.
Sortie : Pour chaque fichier .log, génère des fichiers .csv et _statistic.csv

### EXEMPLE 7

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -CompressOutput
```

Convertit et compresse la sortie en archive ZIP.
Sortie : C:\Logs\dns.zip (contenant dns.csv + fichiers statistiques)

### EXEMPLE 8

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -RemoveSourceFile -Verbose
```

Convertit le journal et supprime le fichier source après traitement réussi.
La sortie détaillée confirme la suppression du fichier.

### EXEMPLE 9

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -InputCulture 'de-DE' -OutputCulture 'en-US'
```

Analyse le format de date allemand (JJ.MM.AAAA) et produit en format US (MM/JJ/AAAA).
À utiliser lors du traitement de journaux provenant de serveurs avec des paramètres régionaux différents.

### EXEMPLE 10

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter 'Packet'
```

Convertit uniquement les entrées de paquets de requêtes/réponses DNS, excluant les entrées EVENT et Note.
Utile pour se concentrer sur le trafic DNS réel.

### EXEMPLE 11

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter 'Packet','Event'
```

Convertit à la fois les paquets DNS et les événements serveur, excluant Note et autres entrées.
Utile pour analyser le trafic DNS avec le contexte des événements serveur.

### EXEMPLE 12

```powershell
PS C:\> Get-ChildItem "C:\Logs\*.log" | Convert-DNSDebugLogFile -RemoveSourceFile -CompressOutput
```

Archivage automatique des journaux : traite tous les journaux, compresse la sortie et supprime les fichiers sources.
Idéal pour les pipelines de traitement de journaux planifiés.

### EXEMPLE 13

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\large-dns.log" -NoDetailsParsing
```

Traite un gros fichier journal avec l’analyse des détails désactivée pour une performance maximale.
Les blocs de détails PACKET sont ignorés, la colonne Details reste vide.
À utiliser pour les très gros fichiers quand la structure détaillée des paquets n’est pas nécessaire.

## PARAMÈTRES

### -CompressOutput

Compresse les fichiers CSV de sortie dans une archive ZIP après création.

Crée un fichier .zip contenant les fichiers CSV générés, puis supprime les CSV non compressés.
Le fichier ZIP est créé dans le même répertoire que le CSV de sortie avec le même nom de base.

Avantages :
- Réduit significativement l’espace disque (les fichiers CSV se compressent généralement à plus de 90 %)
- Simplifie la gestion et l’archivage des fichiers
- Adapté au stockage à long terme

Exemple : Le fichier 'dns.log' génère 'dns.csv' compressé en 'dns.zip', puis 'dns.csv' est supprimé.

```yaml
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

Spécifie la valeur de la colonne ComputerName dans la sortie CSV.
La colonne ComputerName est
toujours présente dans la sortie - si ce paramètre n’est pas spécifié, la colonne sera vide.

Utilisez-le lors de la consolidation de journaux de plusieurs serveurs DNS pour identifier le serveur source dans
les ensembles de données combinés.

Note : Ce n’est PAS un paramètre de télécommande.
Il sert uniquement à étiqueter la sortie.
Si vous indiquez -InputFile vers
un chemin UNC, le fichier est lu depuis ce chemin (aucune exécution distante WinRM n’est effectuée).

```yaml
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

Vous invite à confirmer avant d’exécuter la cmdlet.

Si spécifié, demande confirmation avant :
- Le traitement de chaque fichier journal de débogage DNS
- La suppression des fichiers sources (lorsque -RemoveSourceFile est spécifié)
- L’écrasement des fichiers de sortie existants

Utile pour un traitement interactif lorsque vous souhaitez contrôler les fichiers traités.

```yaml
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

Filtre les types d’entrées du journal à inclure dans la sortie.
Accepte une ou plusieurs valeurs.

Les journaux de débogage DNS contiennent différents types de contexte :
- PACKET : Informations sur les paquets de requêtes et réponses DNS (données principales)
- EVENT : Événements du serveur DNS (ex. : « Le serveur DNS a démarré. »)
- Note : Notes et avertissements diagnostiques (ex. : erreurs de socket, états internes)
- DSPoll, Init, Lookup, Recurse, Remote, Tombstone : Types de contexte supplémentaires

Valeurs valides :
- 'All' : Inclut tous les types de contexte (par défaut)
- 'Packet' : Inclut uniquement les entrées PACKET (requêtes/réponses DNS)
- 'Event' : Inclut uniquement les entrées EVENT (événements serveur)
- 'Note' : Inclut uniquement les entrées Note (informations diagnostiques)
- Toute combinaison : Spécifiez plusieurs valeurs pour inclure des types de contexte spécifiques

Par défaut : All

Exemples :
- 'Packet' filtre uniquement le trafic DNS
- 'Packet','Event' inclut à la fois le trafic DNS et les événements serveur
- 'Note','Event' inclut les notes diagnostiques et les événements serveur

Note : En filtrant sur 'Event' ou 'Note', seules les colonnes DateTime, ThreadId, Context et Information
contiendront des données.
Les autres colonnes (Protocol, ClientIP, etc.) seront vides.

```yaml
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

Spécifie le caractère délimiteur pour la sortie CSV.

Par défaut : point-virgule (;)

Alternatives courantes : virgule (,), tabulation (`t), barre verticale (|)

Utilisez le point-virgule dans les régions où la virgule est le séparateur décimal (Europe).
Utilisez la virgule pour les outils CSV standard et bases de données qui attendent des valeurs séparées par des virgules.

```yaml
Type: String
DefaultValue: ;
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: 2
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -InputCulture

Spécifie la culture/locale à utiliser pour analyser les valeurs date/heure dans le journal de débogage DNS.

Les journaux de débogage DNS utilisent le format de date de la locale Windows du serveur où le journal
a été généré.
Utilisez ce paramètre lors du traitement de journaux provenant de serveurs avec des paramètres régionaux différents.

Par défaut : culture actuelle

Exemples courants :
- 'de-DE' ou 'de-AT' : format allemand (JJ.MM.AAAA ou JJ/MM/AAAA)
- 'en-US' : format US (MM/JJ/AAAA avec AM/PM)
- 'en-GB' : format UK (JJ/MM/AAAA avec heure 24h)
- 'sv-SE' : format suédois/ISO (AAAA-MM-JJ)

```yaml
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

Spécifie le chemin vers le fichier journal de débogage DNS à analyser.
Supporte les tableaux pour traiter plusieurs fichiers.

Accepte l’entrée du pipeline depuis Get-ChildItem ou autres cmdlets produisant des fichiers.

```yaml
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

Ignore l’analyse des blocs de détails PACKET en format JSON structuré.

Si spécifié, les enregistrements PACKET avec blocs de détails auront la ligne d’info TCP/UDP dans la colonne Information, mais la colonne Details restera vide.
Cela améliore significativement
la performance de traitement pour les gros fichiers journaux quand l’analyse détaillée des paquets n’est pas nécessaire.

Utilisez ce commutateur lorsque :
- Vous traitez des fichiers journaux très volumineux (100 Mo+) et n’avez besoin que des informations de requête basiques
- La structure détaillée (flags Message, sections DNS) n’est pas requise pour l’analyse
- La vitesse d’analyse prime sur la complétude des données

Impact sur la performance : Peut améliorer la vitesse de traitement de 30 à 50 % pour les journaux avec de nombreux blocs de détails PACKET.

```yaml
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

Spécifie la culture/locale à utiliser pour formater les valeurs date/heure dans les fichiers CSV de sortie.

Contrôle la manière dont les valeurs DateTime sont écrites dans le CSV.
Utilisez-le lorsque les fichiers CSV seront consommés
par des applications ou systèmes avec des paramètres régionaux spécifiques.

Par défaut : culture actuelle

Exemples courants :
- 'en-US' : format US (MM/JJ/AAAA)
- 'de-DE' : format allemand (JJ.MM.AAAA)
- 'sv-SE' ou InvariantCulture : format ISO (AAAA-MM-JJ) pour compatibilité maximale

```yaml
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

Spécifie le chemin du fichier CSV de sortie.
Si non spécifié, utilise le nom du fichier d’entrée avec extension .csv
dans le même répertoire que le fichier d’entrée.

Important : Doit être un chemin de fichier, pas un répertoire.
Si vous souhaitez utiliser le répertoire du fichier d’entrée avec
un nom personnalisé, spécifiez le chemin complet incluant le nom de fichier.

```yaml
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

Spécifie le type de sortie à générer.

Valeurs valides :
- 'CSV' : Génère uniquement le fichier de données avec toutes les entrées analysées
- 'Statistic' : Génère uniquement les fichiers statistiques avec métriques agrégées
- 'Both' : Génère à la fois les fichiers de données et statistiques (par défaut)

Par défaut : Both

Lorsque les statistiques sont générées, deux fichiers distincts sont créés :
- '_Statistic.csv' : Comptages résumés par type de contexte et par jour (Date, Context, Count, ComputerName)
- '_PacketStatistic.csv' : Comptages détaillés PACKET par jour selon IP client, protocole, direction,
  et type de requête (Date, ClientIP, Protocol, Direction, QuestionType, Count, ComputerName)

```yaml
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

Supprime le fichier journal de débogage DNS source après un traitement réussi.

Utilisez ceci pour les pipelines automatisés de traitement de journaux ou la gestion d’espace disque.
Le fichier source est
supprimé uniquement si le traitement se termine avec succès et que tous les fichiers de sortie sont créés.

Sécurité : Ne peut pas être utilisé avec -SkipHeaderValidation pour éviter la suppression accidentelle de fichiers invalides.

Avertissement : Les fichiers sources sont supprimés définitivement.
Assurez-vous que les fichiers de sortie sont valides avant d’utiliser cette option.

```yaml
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

Ignore la validation de l’en-tête du journal de débogage DNS.

Par défaut, la cmdlet vérifie que les fichiers d’entrée ont un en-tête valide de journal de débogage DNS Server.
Utilisez ce commutateur pour traiter des fichiers sans validation, ce qui peut être utile pour :
- Formats de journaux modifiés ou personnalisés
- Dépannage de problèmes de validation
- Journaux non standard ou pré-traités

Avertissement : Peut entraîner des erreurs de traitement si le fichier n’est pas un journal DNS valide.

```yaml
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

Montre ce qui se passerait si la cmdlet était exécutée.
La cmdlet n’est pas exécutée.

Si spécifié, affiche des informations détaillées sur les opérations qui seraient effectuées
sans les exécuter réellement.
Utile pour :
- Prévisualiser les fichiers qui seraient traités
- Vérifier les chemins des fichiers de sortie avant traitement
- Tester les scripts avant exécution en production

```yaml
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

Cette cmdlet prend en charge les paramètres communs : -Debug, -ErrorAction, -ErrorVariable,
-InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable,
-ProgressAction, -Verbose, -WarningAction, et -WarningVariable. Pour plus d’informations, voir
[about_CommonParameters](https://go.microsoft.com/fwlink/?LinkID=113216).

## INPUTS

### System.String[]

## NOTES

Version  : 1.7.2.1
Auteur   : Andi Bellstedt, Copilot, Patrick Charbonnier (Silent Waters IT Consulting S.L.)
Date     : 2026-07-24
Mots-clés : Microsoft Windows Server, DNSServer, DNS, DebugLog, LogParser

## RELATED LINKS

- [github.com/AndiBellstedt/DNSServer.DebugLogParser](https://github.com/AndiBellstedt/DNSServer.DebugLogParser)
