Obtenez l'âge du journal des événements Windows avec le script PowerShell

Les journaux d'événements Windows doivent rester sur le système pendant au moins 7 jours afin que vous puissiez les consulter à des fins de dépannage ou à toute autre fin. Par défaut, les journaux d'événements seront écrasés lorsque la taille maximale du journal des événements est atteinte. Cela signifie que vous n’aurez pas suffisamment d’historique de journalisation, ce qui peut entraîner des problèmes. Dans cet article, vous apprendrez comment obtenir le script Windows Event Log Age avec PowerShell.

Le script PowerShell Get-EventLogAge.ps1 vérifiera tous les dossiers du journal des événements sur le système et vous fournira un rapport avec les informations ci-dessous :

  1. Nom du journal
  2. Date de l'événement le plus ancien
  3. Date de l'événement le plus récent
  4. Jours depuis le plus ancien événement
  5. Taille Max Mo
  6. PourcentageUtilisé

Télécharger le script PowerShell de l'âge du journal des événements Windows

Créez deux dossiers sur le(C :)conduire:

  • Scripts
  • Température

Téléchargez et placez le script PowerShell Get-EventLogAge.ps1 sur le systèmeC:scriptsdossier. Si vous n'avez pas de dossier de scripts, créez-en un.

Assurez-vous que le fichier est débloqué pour éviter toute erreur lors de l'exécution du script. Pour en savoir plus, consultez l'article Erreur non signée numériquement lors de l'exécution du script PowerShell.

Une autre option consiste à copier et coller le code ci-dessous dans le Bloc-notes. Donnez-lui le nomObtenir-EventLogAge.ps1et placez-le dans le dossier C:scripts.

<#
    .SYNOPSIS
    Get-EventLogAge.ps1

    .DESCRIPTION
    Export the oldest and newest event logs dates to a CSV file.

    .LINK
    www.alitajran.com/get-windows-event-log-age-powershell-script/

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 08/22/2024 - Initial version
#>

# CSV file path to export
$CsvPath = "C:tempEventLogAgeReport.csv"

# Get the current date
$currentDate = Get-Date

# Get all log names
$logNames = Get-WinEvent -ListLog * | Select-Object -ExpandProperty LogName

# Create a generic list to store report data
$Report = [System.Collections.Generic.List[Object]]::new()

# Iterate through each log and find the oldest and newest events
foreach ($logName in $logNames) {
    # Get the oldest event directly
    $oldestEvent = Get-WinEvent -LogName $logName -MaxEvents 1 -Oldest -ErrorAction SilentlyContinue |
    Select-Object -Property TimeCreated

    # Get the newest event directly
    $newestEvent = Get-WinEvent -LogName $logName -MaxEvents 1 -ErrorAction SilentlyContinue |
    Select-Object -Property TimeCreated

    # Get the log's maximum size and current size
    $logInfo = Get-WinEvent -ListLog $logName

    $maxSize = [math]::Round($logInfo.MaximumSizeInBytes / 1048576, 2)
    $currentSize = [math]::Round($logInfo.FileSize / 1048576, 2)

    if ($maxSize -ne 0) {
        $percentageUsed = [math]::Round(($currentSize / $maxSize) * 100, 2)
    }
    else {
        $percentageUsed = "N/A"
    }

    if ($oldestEvent) {
        # Calculate the number of days since the oldest event
        $daysAgo = ($currentDate - $oldestEvent.TimeCreated).Days

        $ReportLine = [PSCustomObject]@{
            LogName              = $logName
            OldestEventDate      = $oldestEvent.TimeCreated
            NewestEventDate      = $newestEvent.TimeCreated
            DaysSinceOldestEvent = "$daysAgo"
            MaxSizeMB            = "$maxSize MB"
            PercentageUsed       = "$percentageUsed %"
        }
        $Report.Add($ReportLine)
    }
    else {
        $ReportLine = [PSCustomObject]@{
            LogName              = $logName
            OldestEventDate      = "No events found"
            NewestEventDate      = "No events found"
            DaysSinceOldestEvent = "N/A"
            MaxSizeMB            = "$maxSize MB"
            PercentageUsed       = "$percentageUsed %"
        }
        $Report.Add($ReportLine)
    }
}

# Export the results to a CSV file
$Report | Export-Csv -Path $CsvPath -NoTypeInformation -Encoding Utf8

Voilà à quoi ça ressemble.

Exécuter le script PowerShell Get Windows Event Log Age

Exportez le rapport sur l’âge des journaux d’événements Windows vers un fichier CSV.

Exécutez PowerShell en tant qu'administrateur et exécutez la commande ci-dessous.

A lire aussi :Planificateur de tâches pour exécuter des scripts PowerShell et des alertes par e-mail

C:scripts.Get-EventLogAge.ps1

Trouver le fichierEventLogAgeReport.csvdans le cheminC:temp.

Ouvrez le fichier CSV avec votre application préférée. Dans notre exemple, il s'agit de Microsoft Excel.

Le reportage a l'air génial !

Conclusion

Vous avez appris à obtenir l'âge du journal des événements Windows avec le script PowerShell. Exécutez le script et consultez le rapport pour tous les détails. N'oubliez pas de disposer d'au moins 7 jours d'historique des journaux d'événements disponibles pour les dossiers qui sont importants pour vous.

Avez-vous apprécié cet article ? Vous aimerez peut-être aussi Vérifier l’espace disque libre sous Windows avec le script PowerShell. N'oubliez pas de nous suivre et de partager cet article.

Related Posts