我想使用 PowerShell 删除事件日志的旧条目(其中旧的意思是“早于 X 天”)。
我找到了Clear-EventLog cmdlet,但是
从本地或远程计算机上的指定事件日志中删除所有条目。
我发现很多脚本使用这个 cmdlet 来删除所有条目 -
但是有没有办法只选择事件日志的一些 [旧] 条目并只删除那些?
我想使用 PowerShell 删除事件日志的旧条目(其中旧的意思是“早于 X 天”)。
我找到了Clear-EventLog cmdlet,但是
从本地或远程计算机上的指定事件日志中删除所有条目。
我发现很多脚本使用这个 cmdlet 来删除所有条目 -
但是有没有办法只选择事件日志的一些 [旧] 条目并只删除那些?
正如詹姆斯所说,你不能。但是,如果您想在日志中保留日期范围的一部分,它并不干净,但这里有一个解决方法:
您使用“wevutil”实用程序( http://technet.microsoft.com/fr-fr/library/cc732848%28v=ws.10%29.aspx )备份要保留的消息,类似这样:
$LogName="Application" $DateStart=(Get-Date).AddDays(-$Days) $DateEnd=Get-Date $EvtFile="$ComputerName" + "-EventLogExport-" + "$LogName" + ".evtx" function Get-Milliseconds ($EventsDate) { $EventsTimeSpan=New-TimeSpan -Start $EventsDate -End (Get-Date) [math]::Round($EventsTimeSpan.TotalMilliseconds) } # 结束函数 $EventsDateStart=Get-Milliseconds(Get -Date $DateStart) $EventsDateEnd=Get-Milliseconds(Get-Date $DateEnd)
wevtutil epl $LogName $EvtFile /q:"*[System[TimeCreated[timediff(@SystemTime)>=$EventsDateEnd] 和 TimeCreated[timediff(@SystemTime) <= $EventsDateStart]]]"
使用 Clear-EventLog cmdlet 清空事件日志。
我找到了一个从所有事件日志中删除所有条目的单行器,例如
wevtutil el | Foreach-Object {Write-Host "Clearing $_"; wevtutil cl "$_"}
就我个人而言,我要么设置事件日志大小的限制
limit-eventLog -logname Security -MaximumSize 64KB
或每月导出并在导出后删除。