使用PowerShell删除事件日志的旧条目?

时间:2013-02-25 12:50:05

标签: powershell

我想使用PowerShell删除事件日志的旧条目(旧的意思是“超过X天”)。
我找到了Clear-EventLog cmdlet但是那个

  

删除本地或远程计算机上指定事件日志中的所有条目。

我发现很多使用此cmdlet删除所有条目的脚本 -
但有没有办法只选择事件日志的一些[旧​​]条目,只删除那些?

2 个答案:

答案 0 :(得分:0)

正如詹姆斯所说,你做不到。但是如果你想保留一个日期范围的日志范围,它不是很干净,但这是一个解决方法:

  1. 您使用'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]]]”

  2. 使用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

或导出后每月导出和删除。