2

我想使用 PowerShell 删除事件日志的旧条目(其中旧的意思是“早于 X 天”)。
我找到了Clear-EventLog cmdlet,但是

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

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

4

2 回答 2

0

正如詹姆斯所说,你不能。但是,如果您想在日志中保留日期范围的一部分,它并不干净,但这里有一个解决方法:

  1. 您使用“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]]]"

  2. 使用 Clear-EventLog cmdlet 清空事件日志。

于 2013-02-28T14:52:14.377 回答
0

我找到了一个从所有事件日志中删除所有条目的单行器,例如

wevtutil el | Foreach-Object {Write-Host "Clearing $_"; wevtutil cl "$_"}

就我个人而言,我要么设置事件日志大小的限制

limit-eventLog -logname Security -MaximumSize 64KB

或每月导出并在导出后删除。

于 2015-12-07T11:17:15.763 回答