รับอายุบันทึกเหตุการณ์ของ Windows ด้วยสคริปต์ PowerShell
บันทึกเหตุการณ์ของ Windows ควรอยู่ในระบบเป็นเวลาอย่างน้อย 7 วัน เพื่อให้คุณสามารถตรวจสอบเพื่อแก้ไขปัญหาหรือเพื่อวัตถุประสงค์อื่นใด ตามค่าเริ่มต้น บันทึกเหตุการณ์จะถูกเขียนทับเมื่อถึงขนาดบันทึกเหตุการณ์สูงสุด ซึ่งหมายความว่าคุณจะมีประวัติบันทึกไม่เพียงพอ ซึ่งอาจทำให้เกิดปัญหาได้ ในบทความนี้ คุณจะได้เรียนรู้วิธีรับ Windows Event Log Age พร้อมสคริปต์ PowerShell
สคริปต์ PowerShell อายุบันทึกเหตุการณ์ของ Windows
สคริปต์ PowerShell Get-EventLogAge.ps1 จะตรวจสอบโฟลเดอร์บันทึกเหตุการณ์ทั้งหมดในระบบและจัดทำรายงานพร้อมข้อมูลด้านล่าง:
- ชื่อบันทึก
- OldestEventDate
- ใหม่ล่าสุดEventDate
- วันนับตั้งแต่เก่าที่สุดเหตุการณ์
- MaxSizeMB
- เปอร์เซ็นต์ที่ใช้
ดาวน์โหลดสคริปต์ 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 อย่าลืมติดตามเราและแบ่งปันบทความนี้


