ค้นหาเว็บไซต์

รับอายุบันทึกเหตุการณ์ของ Windows ด้วยสคริปต์ PowerShell


บันทึกเหตุการณ์ของ Windows ควรอยู่ในระบบเป็นเวลาอย่างน้อย 7 วัน เพื่อให้คุณสามารถตรวจสอบเพื่อแก้ไขปัญหาหรือเพื่อวัตถุประสงค์อื่นใด ตามค่าเริ่มต้น บันทึกเหตุการณ์จะถูกเขียนทับเมื่อถึงขนาดบันทึกเหตุการณ์สูงสุด ซึ่งหมายความว่าคุณจะมีประวัติบันทึกไม่เพียงพอ ซึ่งอาจทำให้เกิดปัญหาได้ ในบทความนี้ คุณจะได้เรียนรู้วิธีรับ Windows Event Log Age พร้อมสคริปต์ PowerShell

สคริปต์ PowerShell อายุบันทึกเหตุการณ์ของ Windows

สคริปต์ PowerShell Get-EventLogAge.ps1 จะตรวจสอบโฟลเดอร์บันทึกเหตุการณ์ทั้งหมดในระบบและจัดทำรายงานพร้อมข้อมูลด้านล่าง:

  1. ชื่อบันทึก
  2. OldestEventDate
  3. ใหม่ล่าสุดEventDate
  4. วันนับตั้งแต่เก่าที่สุดเหตุการณ์
  5. MaxSizeMB
  6. เปอร์เซ็นต์ที่ใช้

ดาวน์โหลดสคริปต์ Windows Event Log Age PowerShell

สร้างสองโฟลเดอร์บนไดรฟ์ (C:):

  • สคริปต์
  • อุณหภูมิ

ดาวน์โหลดและวางสคริปต์ Get-EventLogAge.ps1 PowerShell บนโฟลเดอร์ C:\scripts ของระบบ หากคุณไม่มีโฟลเดอร์สคริปต์ ให้สร้างขึ้นใหม่

ตรวจสอบให้แน่ใจว่าไฟล์ไม่ได้ถูกบล็อกเพื่อป้องกันข้อผิดพลาดใด ๆ เมื่อเรียกใช้สคริปต์ อ่านเพิ่มเติมในบทความไม่มีข้อผิดพลาดในการเซ็นชื่อแบบดิจิทัลเมื่อเรียกใช้สคริปต์ PowerShell

อีกทางเลือกหนึ่งคือการคัดลอกและวางโค้ดด้านล่างลงใน Notepad ตั้งชื่อ Get-EventLogAge.ps1 และวางไว้ในโฟลเดอร์ 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:\temp\EventLogAgeReport.csv"

# Get the current date
$currentDate = Get-Date

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

# Create an array to hold the results
$results = @()

# 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

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

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

นี่คือลักษณะที่ปรากฏ

เรียกใช้สคริปต์ PowerShell อายุบันทึกเหตุการณ์ของ Windows

ส่งออกรายงานอายุบันทึกเหตุการณ์ Windows เป็นไฟล์ CSV

เรียกใช้ PowerShell ในฐานะผู้ดูแลระบบและเรียกใช้คำสั่งด้านล่าง

C:\scripts\.\Get-EventLogAge.ps1

ค้นหาไฟล์ EventLogAgeReport.csv ในเส้นทาง C:\temp

เปิดไฟล์ CSV ด้วยแอปพลิเคชันที่คุณชื่นชอบ ในตัวอย่างของเรา มันคือ Microsoft Excel

รายงานดูดี!

อ่านเพิ่มเติม: การตรวจสอบสภาพ Active Directory ด้วยสคริปต์ PowerShell »

บทสรุป

คุณได้เรียนรู้วิธีรับ Windows Event Log Age ด้วยสคริปต์ PowerShell เรียกใช้สคริปต์และดูรายงานเพื่อดูรายละเอียดทั้งหมด อย่าลืมมีประวัติบันทึกเหตุการณ์อย่างน้อย 7 วันสำหรับโฟลเดอร์ที่สำคัญสำหรับคุณ

คุณสนุกกับบทความนี้หรือไม่? คุณอาจต้องการตรวจสอบพื้นที่ว่างในดิสก์บน Windows ด้วยสคริปต์ PowerShell อย่าลืมติดตามเราและแบ่งปันบทความนี้

บทความที่เกี่ยวข้อง