# Paramètres et options

> Ce que chaque option de Convert-DNSDebugLogFile modifie réellement, quand vous en avez besoin, et les pièges faciles à éviter.

---

LLMS index: [llms.txt](/llms.txt)

---

Cette page explique les options en langage clair et dans l'ordre où vous en aurez généralement besoin. C'est un guide, pas une spécification — la liste autoritaire et toujours à jour des paramètres se trouve dans la [référence de commande](../commands/convert-dnsdebuglogfile/) et dans :

```powershell
Get-Help Convert-DNSDebugLogFile -Full
```

## La version courte

```powershell
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log"
```

Cette seule ligne vous donne déjà un comportement sensé : fichiers de données et de statistiques, délimiteur point-virgule, format de date de votre machine, validation de l’en-tête activée, journal source intact. Tout ce qui suit est du réglage fin.

| Option | Par défaut | Changez-la quand |
|---|---|---|
| `-InputFile` | *(obligatoire)* | toujours |
| `-OutputFile` | chemin d’entrée avec `.csv` | vous voulez la sortie ailleurs |
| `-Delimiter` | `;` | votre consommateur attend une virgule, une tabulation ou un pipe |
| `-ComputerName` | vide | vous fusionnez des journaux de plusieurs serveurs |
| `-OutputType` | `Both` | vous ne voulez que les données, ou seulement les synthèses |
| `-ContextFilter` | `All` | vous ne vous intéressez qu’au trafic DNS réel |
| `-InputCulture` | culture actuelle | le journal vient d’un serveur avec une autre locale |
| `-OutputCulture` | culture actuelle | une machine lira le CSV |
| `-NoDetailsParsing` | désactivé | le débit compte plus que les détails des paquets |
| `-CompressOutput` | désactivé | vous archivez ou transférez les résultats |
| `-RemoveSourceFile` | désactivé | nettoyage programmé, et vous faites confiance à la sortie |
| `-SkipHeaderValidation` | désactivé | le fichier est valide mais l’en-tête est inhabituel |

## Entrée et sortie

### -InputFile

Chemin vers le journal à convertir. Accepte un tableau et l’entrée par pipeline — c’est pourquoi ceci fonctionne :

```powershell
Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" | Convert-DNSDebugLogFile
```

`Get-ChildItem` émet des objets avec une propriété `FullName`, et `-InputFile` l’accepte par nom de propriété (ses alias incluent `FullName`, `Path`, `FilePath`). Pas besoin de `ForEach-Object`.

Les chemins locaux et SMB/UNC fonctionnent tous les deux :

```powershell
Convert-DNSDebugLogFile -InputFile "\\dc01\C$\Administration\Logs\DNSServer\dns.log"
```

La commande peut aussi ouvrir un journal que le serveur DNS a actuellement ouvert. Voir [journaux actifs](#journaux-actifs) ci-dessous avant de vous y fier.

### -OutputFile

Sans cette option, le CSV est créé à côté du fichier d’entrée, même nom de base, extension `.csv`. Avec, vous contrôlez la destination.

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">Cela doit être un chemin de fichier, pas un dossier</div>


`-OutputFile "D:\Processed\"` ne signifie pas "écrire dans ce dossier". Donnez le chemin complet incluant le nom du fichier : `-OutputFile "D:\Processed\dns_data.csv"`.

Cela signifie aussi que `-OutputFile` n’a pas de sens quand vous traitez plusieurs fichiers en pipeline — chaque conversion écrirait au même endroit. Pour les traitements par lots, laissez cette option de côté et laissez chaque journal produire son propre CSV.
</div>


### -Delimiter

Par défaut, c’est un point-virgule, car dans les locales où la virgule est le séparateur décimal, c’est ce qu’Excel attend. Utilisez `-Delimiter ","` pour les outils et bases de données qui attendent des valeurs séparées par des virgules classiques, ou `` -Delimiter "`t" `` pour une tabulation.

Quelle que soit votre sélection, utilisez la *même* valeur à l’import. Un décalage est la cause numéro un de "tout est dans une seule colonne".

## Étiquetage et filtrage

### -ComputerName

Remplit la colonne `ComputerName`. La colonne existe de toute façon ; cela lui donne juste une valeur.

```powershell
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ComputerName $env:COMPUTERNAME
```

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">Ce n’est pas un paramètre de télécommande</div>


Malgré le nom (et les alias `-Server` / `-DNSServer` / `-HostName`), `-ComputerName` ne se connecte **pas** à quoi que ce soit. Pas de WinRM, pas d’exécution distante. Il écrit juste une étiquette dans la sortie. Pour lire un journal distant, pointez `-InputFile` vers un chemin UNC.
</div>


Mettez-le toujours quand plusieurs serveurs alimentent un même jeu de données — sinon vous ne pourrez pas dire ensuite de quel DC vient une ligne.

### -OutputType

- `CSV` — fichier de données uniquement
- `Statistic` — les deux fichiers agrégés seulement, pas les données ligne par ligne
- `Both` — les trois fichiers *(par défaut)*

`Statistic` est l’option rapide et légère quand vous ne voulez que les tendances journalières. `CSV` est adapté quand un système en aval fait sa propre agrégation.

### -ContextFilter

Un journal de débogage DNS mélange le trafic réel des requêtes avec le bavardage interne du serveur. `-ContextFilter` décide ce qui survit dans la sortie.

```powershell
# uniquement le trafic DNS réel
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter Packet

# trafic plus événements serveur, mais pas les notes de diagnostic
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter Packet, Event
```

| Valeur | Contient |
|---|---|
| `All` | tout *(par défaut)* |
| `Packet` | requêtes et réponses DNS — les données dont la plupart des analyses ont besoin |
| `Event` | événements serveur, ex. "Le serveur DNS a démarré" |
| `Note` | notes et avertissements de diagnostic, ex. erreurs de socket |

D’autres types de contexte (`DSPoll`, `Init`, `Lookup`, `Recurse`, `Remote`, `Tombstone`) apparaissent sous `All`.

Filtrer sur `Event` ou `Note` remplit seulement `DateTime`, `ThreadId`, `Context` et `Information` — les colonnes de protocole restent vides car ces entrées ne portent pas cette information.

`-ContextFilter Packet` est le choix habituel pour les pipelines de sécurité et de reporting : il enlève le bruit et réduit nettement la sortie.

## Journaux internationaux

Le serveur DNS écrit les horodatages dans la locale Windows de la machine où il tourne. Un DC allemand écrit `20.01.2026 23:00:16` ; un serveur US écrit `1/20/2026 11:00:16 PM`. Si la locale de votre poste diffère de celle du serveur, l’analyse échoue — ou pire, échange silencieusement jour et mois.

### -InputCulture

Indiquez au parseur la locale utilisée par le *journal source* :

```powershell
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns-berlin.log" -InputCulture 'de-DE'
```

| Culture | Format d’horodatage dans le journal |
|---|---|
| `de-DE` | `JJ.MM.AAAA HH:MM:SS` |
| `en-US` | `M/J/AAAA H:MM:SS AM/PM` |
| `en-GB` | `JJ/MM/AAAA HH:MM:SS` |
| `sv-SE` | `AAAA-MM-JJ HH:MM:SS` |

Par défaut, c’est la culture de la session qui exécute la commande. Dans un environnement à locales mixtes, définissez-la explicitement plutôt que de compter sur ce défaut — et souvenez-vous qu’une tâche planifiée lancée en tant que `SYSTEM` peut ne pas avoir la culture que vous avez testée en interactif.

### -OutputCulture

Contrôle comment les horodatages sont *écrits* dans le CSV :

```powershell
# sortie de type ISO que SQL Server, Power BI et pandas comprennent tous
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputCulture 'sv-SE'

# même effet, culture invariante explicite
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" `
    -OutputCulture ([System.Globalization.CultureInfo]::InvariantCulture)
```

Règle générale : si un humain ouvre le fichier dans Excel, adaptez à la culture locale. Si une machine le lit, utilisez `sv-SE` ou la culture invariante et ne vous souciez plus des paramètres régionaux à l’import.

Les deux paramètres sont indépendants — vous pouvez lire un journal suédois et écrire une sortie au format US.

## Vitesse et stockage

### -NoDetailsParsing

Si le serveur DNS journalise les détails complets des paquets, le parseur transforme chaque bloc de détails en JSON dans la colonne `Details`. C’est utile, mais c’est aussi la partie la plus coûteuse du traitement et cela gonfle le CSV.

```powershell
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -NoDetailsParsing
```

La colonne reste présente mais vide ; la ligne d’en-tête des détails TCP/UDP est toujours disponible dans `Information`. Sur des journaux riches en blocs de détails, cela peut réduire le temps de traitement de 30 à 50 %. Utilisez-le dès que les informations au niveau des requêtes suffisent.

### -CompressOutput

Compresse les fichiers CSV générés en ZIP et supprime les fichiers non compressés. `dns.log` produit `dns.zip` au lieu de `dns.csv`.

```powershell
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -CompressOutput
```

Un CSV de cette forme se compresse typiquement à 90 % ou plus, donc c’est presque un gain de stockage gratuit pour les archives et pour l’envoi des fichiers sur le réseau.

### -RemoveSourceFile

Supprime le fichier source `.log` après une conversion réussie — le journal n’est supprimé que si tous les fichiers de sortie ont été créés.

```powershell
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -CompressOutput -RemoveSourceFile
```

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">La suppression est définitive</div>


Il n’y a pas de corbeille ici. Validez votre sortie sur des journaux réels avant d’activer cela dans une tâche planifiée, et ne le pointez jamais vers un fichier journal actif.

La commande refuse délibérément de combiner `-RemoveSourceFile` avec `-SkipHeaderValidation`, pour que vous ne puissiez pas supprimer un fichier jamais confirmé comme journal DNS.
</div>


## Filets de sécurité

### -SkipHeaderValidation

Par défaut, la commande vérifie que le fichier est bien un journal de débogage DNS Server avant de le parser. Cela évite la classique erreur de pointer la tâche vers le mauvais dossier.

Désactivez-le uniquement pour des cas vraiment inhabituels : journaux édités à la main, extraits pré-filtrés, formats personnalisés. Gardez-le activé partout ailleurs — c’est peu coûteux et c’est ce qui vous protège d’une faute de frappe et d’une montagne de lignes inutiles.

### -WhatIf et -Confirm

La commande supporte les deux. `-WhatIf` est la bonne façon de voir ce qu’une nouvelle tâche par lot toucherait :

```powershell
Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
    Convert-DNSDebugLogFile -RemoveSourceFile -WhatIf
```

`-Confirm` demande une confirmation avant de traiter chaque fichier, avant de supprimer un fichier source, et avant d’écraser une sortie existante.

## Journaux actifs

`Convert-DNSDebugLogFile` peut lire un fichier que le serveur DNS a ouvert. Pratique pour un coup d’œil ad hoc sur ce qui se passe en ce moment.

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">Pas pour les exécutions planifiées ou en production</div>


Un journal actif change pendant sa lecture. La sortie peut manquer des entrées écrites pendant la conversion et son dernier enregistrement peut être tronqué. Relancer la commande donne un résultat différent.

Pour une sortie reproductible, activez le basculement des journaux sur le serveur DNS et ne convertissez que les fichiers fermés et tournés — par exemple en sautant le plus récent :

```powershell
Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
    Sort-Object LastWriteTime -Descending |
    Select-Object -Skip 1 |
    Convert-DNSDebugLogFile -ComputerName $env:COMPUTERNAME
```
</div>


## Mise en pratique

Une invocation typique en production sur un contrôleur de domaine :

```powershell
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
```

À lire comme : prenez chaque journal tourné sauf l’actif, ne gardez que le trafic DNS, étiquetez chaque ligne avec le nom du serveur, écrivez des horodatages lisibles par machine, et laissez des archives compressées. La version complète pour tâche planifiée et stratégie de groupe est dans l’[exemple de collecte pilotée par GPO](../examples/gpo-driven-collection/).
