Bonjour à tout le monde,

Je cherche un moyen de récupérer les infos DNS d'un serveur DNS (evidemment :p) mais sur une période donnée, par ex : sur la dernière heure, le denier mois.
J'utilise Get-DnsServerStatistics mais les param qui y sont liés ne me permettent pas de le faire (ou alors j'ai pas tout lu, ou pas bien compris)
Mais quand je cherche sur la toile, je trouve pas de façon de le faire.
D'après les infos que j'ai trouvé, ce ne serait pas possible parce que ces informations ne sont que en mémoire, et pas enregistrées dans un fichier.

Alors avant de venir consulter la communauté, j'ai posé la question à ChatG et Copil.
Le 1er me dit que ce n'est pas possible et qu'il faudrait faire un script qui capture des 'instantanés'. Il m'a donc proposé un script mais cela ne correspond pas exactement à ce que je veux.
Je vous laisse juger de sa pertinence, je ne suis pas assez calé en powershell, mais cela ne pas l'air d'être n'importe quoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Dossier pour stocker les statistiques.
$StatsFolder = "C:\DNSStats"
if (-not (Test-Path $StatsFolder)) {
    New-Item -ItemType Directory -Path $StatsFolder | Out-Null
}

# Fonction pour capturer les statistiques DNS
function Capture-DnsStatistics {
    $currentStats = Get-DnsServerStatistics
    $timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
    $statsFile = Join-Path -Path $StatsFolder -ChildPath "DNSStats_$timestamp.json"
    $currentStats | ConvertTo-Json -Depth 10 | Set-Content -Path $statsFile
}

# Fonction pour calculer les différences
function Get-DnsStatisticsDifference {
    param (
        [string]$StartFile,
        [string]$EndFile
    )

    $startStats = Get-Content -Path $StartFile | ConvertFrom-Json
    $endStats = Get-Content -Path $EndFile | ConvertFrom-Json

    # Calcul des différences pour chaque compteur
    $diffStats = @{}
    foreach ($category in $startStats.GetEnumerator()) {
        if ($category.Value -is [System.Collections.Hashtable]) {
            $diffStats[$category.Key] = @{}
            foreach ($counter in $category.Value.GetEnumerator()) {
                $diffStats[$category.Key][$counter.Key] = $endStats[$category.Key][$counter.Key] - $startStats[$category.Key][$counter.Key]
            }
        } else {
            $diffStats[$category.Key] = $endStats[$category.Key] - $startStats[$category.Key]
        }
    }

    return $diffStats
}

# Capturer les statistiques actuelles
Capture-DnsStatistics

# Exemple d'utilisation
# Pour comparer deux fichiers :
# Get-DnsStatisticsDifference -StartFile "chemin_du_fichier_debut.json" -EndFile "chemin_du_fichier_fin.json"
Le 2nd m'a proposé get-DnsServerStatistics | where-object { $_.TimeGenerated -ge $startTime} où $startTime = (Get-date).addHours(-1). Bien évidemment, cela ne fonctionne pas. Il y a peut etre une faute de syntaxe quelque part...

Est-ce-que quelqu'un saurait me dire s'il existe une autre possiblité ?
L'esprit humain et l'expérience accumulée sont bien plus efficace je pense

Merci d'avoir pris le temps de me lire et bonne journée (soirée, weekend)