使用 PowerShell 脚本获取 Windows 事件日志年龄
Windows 事件日志应至少在系统上保留 7 天,以便您可以查看它们以进行故障排除或任何其他目的。默认情况下,当达到最大事件日志大小时,事件日志将被覆盖。这意味着您将没有足够的日志历史记录,这可能会导致问题。在本文中,您将了解如何使用 PowerShell 脚本获取 Windows 事件日志年龄。
Get-EventLogAge.ps1 PowerShell 脚本将检查系统上的所有事件日志文件夹,并为您提供包含以下信息的报告:
- 日志名称
- 最旧事件日期
- 最新事件日期
- 自最古老事件以来的天数
- 最大MB
- 使用百分比
下载 Windows 事件日志时代 PowerShell 脚本
上创建两个文件夹(中:)驾驶:
- 脚本
- 温度
下载 Get-EventLogAge.ps1 PowerShell 脚本并将其放置在系统上C:脚本文件夹。如果您没有脚本文件夹,请创建一个。
确保该文件未被阻止,以防止运行脚本时出现任何错误。请阅读文章运行 PowerShell 脚本时出现未数字签名错误来了解更多信息。
另一种选择是将以下代码复制并粘贴到记事本中。给它起个名字获取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: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
这就是它的样子。
运行获取 Windows 事件日志时代 PowerShell 脚本
将 Windows 事件日志期限报告导出到 CSV 文件。
以管理员身份运行 PowerShell 并运行以下命令。
另请阅读:用于运行 PowerShell 脚本和电子邮件警报的任务计划程序
C:scripts.Get-EventLogAge.ps1
找到文件事件日志年龄报告.csv在路径中C:温度。
使用您喜欢的应用程序打开 CSV 文件。在我们的示例中,它是 Microsoft Excel。
报告看起来很棒!
结论
您学习了如何使用 PowerShell 脚本获取 Windows 事件日志年龄。运行脚本并查看报告以获取所有详细信息。请记住,对于您重要的文件夹,应保留至少 7 天的事件日志历史记录。
您喜欢这篇文章吗?您可能还喜欢使用 PowerShell 脚本检查 Windows 上的可用磁盘空间。不要忘记关注我们并分享这篇文章。
