PowerShell betiğiyle Windows Olay Günlüğü Yaşını Alın

Sorun giderme veya başka amaçlarla inceleyebilmeniz için Windows Olay Günlükleri en az 7 gün boyunca sistemde kalmalıdır. Varsayılan olarak, maksimum olay günlüğü boyutuna ulaşıldığında olay günlüklerinin üzerine yazılacaktır. Bu, sorunlara neden olabilecek yeterli günlük geçmişine sahip olmayacağınız anlamına gelir. Bu yazımızda PowerShell betiği ile Windows Olay Günlüğü Yaşının nasıl alınacağını öğreneceksiniz.

Get-EventLogAge.ps1 PowerShell betiği, sistemdeki tüm olay günlüğü klasörlerini kontrol edecek ve size aşağıdaki bilgileri içeren bir rapor sağlayacaktır:

  1. GünlükAdı
  2. En Eski EtkinlikTarihi
  3. En YeniEtkinlikTarihi
  4. En Eski Etkinlikten Beri Geçen Günler
  5. MaxSizeMB
  6. Kullanım Yüzdesi

Windows Olay Günlüğü Yaşı PowerShell betiğini indirin

İki klasör oluşturun(C:)sürmek:

  • Komut dosyaları
  • Sıcaklık

Get-EventLogAge.ps1 PowerShell betiğini indirip sisteme yerleştirinC:komut dosyalarıdosya. Komut dosyaları klasörünüz yoksa bir tane oluşturun.

Komut dosyasını çalıştırırken herhangi bir hata oluşmasını önlemek için dosyanın engellemesinin kaldırıldığından emin olun. PowerShell betiğini çalıştırırken dijital olarak imzalanmamış hata makalesinde daha fazlasını okuyun.

Diğer bir seçenek de aşağıdaki kodu kopyalayıp Not Defteri'ne yapıştırmaktır. Ona adını verGet-EventLogAge.ps1ve C:scripts klasörüne yerleştirin.

<#
    .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

Bu şekilde görünüyor.

Önerilen okuma:Olay Görüntüleyicideki Tüm Olay Günlükleri Nasıl Temizlenir

Windows Olay Günlüğü Yaşını Al PowerShell betiğini çalıştırın

Windows Olay Günlükleri yaş raporunu CSV dosyasına aktarın.

PowerShell'i yönetici olarak çalıştırın ve aşağıdaki komutu çalıştırın.

C:scripts.Get-EventLogAge.ps1

Dosyayı bulEventLogAgeReport.csvyoldaC:sıcaklık.

CSV dosyasını favori uygulamanızla açın. Örneğimizde, Microsoft Excel.

Rapor harika görünüyor!

Çözüm

PowerShell betiğiyle Windows Olay Günlüğü Yaşını nasıl alacağınızı öğrendiniz. Komut dosyasını çalıştırın ve tüm ayrıntılar için rapora bakın. Sizin için önemli olan klasörler için en az 7 günlük olay günlüğü geçmişine sahip olmayı unutmayın.

Bu makaleyi beğendiniz mi? Ayrıca PowerShell betiğiyle Windows'taki boş disk alanını kontrol etmek de hoşunuza gidebilir. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.

Related Posts