我想使用PowerShell删除事件日志的旧条目(旧的意思是“超过X天”)。
我找到了Clear-EventLog cmdlet但是那个
删除本地或远程计算机上指定事件日志中的所有条目。
我发现很多使用此cmdlet删除所有条目的脚本 -
但有没有办法只选择事件日志的一些[旧]条目,只删除那些?
答案 0 :(得分:0)
正如詹姆斯所说,你做不到。但是如果你想保留一个日期范围的日志范围,它不是很干净,但这是一个解决方法:
您使用'wevutil'实用程序(http://technet.microsoft.com/fr-fr/library/cc732848%28v=ws.10%29.aspx)备份要保留的邮件 这样的事情:
$ LOGNAME = “应用程序” $ DateStart =(获取最新).AddDays( - $天) $ DateEnd =获取最新 $ EvtFile =“$ ComputerName”+“ - EventLogExport-”+“$ LogName”+“。evtx” function Get-Milliseconds($ EventsDate){ $ EventsTimeSpan = New-TimeSpan -Start $ EventsDate -End(Get-Date) [数学] ::回合($ EventsTimeSpan.TotalMilliseconds) } #end function $ EventsDateStart = Get-Milliseconds(Get-Date $ DateStart) $ EventsDateEnd = Get-Milliseconds(Get-Date $ DateEnd)
wevtutil epl $ LogName $ EvtFile / q:“* [System [TimeCreated [timediff(@SystemTime)> = $ EventsDateEnd] and TimeCreated [timediff(@SystemTime)< = $ EventsDateStart]]]”
使用Clear-EventLog cmdlet清空事件日志。
答案 1 :(得分:0)
I found a one-liner从所有事件日志中删除所有条目 e.g。
wevtutil el | Foreach-Object {Write-Host "Clearing $_"; wevtutil cl "$_"}
我个人对事件日志大小设置了限制
limit-eventLog -logname Security -MaximumSize 64KB
或导出后每月导出和删除。