Есть ли способ удалить все записи из журналов событий Windows (приложения, системы и программное обеспечение), кроме последних 24 часов?
Через командную строку, например командный файл.
В Windows 2008 R2 Server и Windows 7
Вы не можете делать то, что пытаетесь сделать. Вы можете сохранить или очистить журнал событий. Когда вы очищаете, вы можете при желании сохранить события перед очисткой.
РЕДАКТИРОВАТЬ
Посмотрев снова, это не очень помогло. Вы не можете удалить некоторые события из журнала событий, не удалив их все. Однако вы можете экспортировать некоторые события на основе фильтра. Например, следующая команда экспортирует все события, зарегистрированные в журнале системных событий за последние 24 часа:
wevtutil epl system c:\system.evtx /q:"*[System[TimeCreated[timediff(@SystemTime) <= 86400000]]]"
Это ближе к тому, что вы хотите? Если нет, не могли бы вы уточнить, можем ли мы еще чем-то помочь?
Нашел это:
If WScript.Arguments.Count > 1 Then
WScript.Echo
WScript.Echo "Usage: cscript ""Clear Event Logs.vbs"" [computer name]"
WScript.Echo
WScript.Quit
End If
Dim strComputer ' As String
If WScript.Arguments.Count > 0 Then
strComputer= WScript.Arguments(0)
Else
strComputer= "localhost"
End If
ClearEventLogs strComputer
WScript.Echo "Done"
Private Sub ClearEventLogs( _
strComputer)
WScript.Echo "Clearing event logs on " & strComputer & "..."
Set objWMIService = GetObject( _
"winmgmts:" & "{impersonationLevel=impersonate,(Backup)}!\\" _
& strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery( _
"Select * from Win32_NTEventLogFile")
For Each objLogfile in colLogFiles
ClearEventLog strComputer, objLogfile.LogfileName
Next
End Sub
Private Sub ClearEventLog( _
strComputer, _
strEventLogName)
WScript.Echo "Clearing '" & strEventLogName & "' event log on " _
& strComputer & "..."
Set objWMIService = GetObject( _
"winmgmts:" & "{impersonationLevel=impersonate,(Backup)}!\\" _
& strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery( _
"Select * from Win32_NTEventLogFile where LogFileName='" _
& strEventLogName & "'")
For Each objLogfile in colLogFiles
Dim backupFilename
backupFilename= "C:\" & strEventLogName & "_" & GetFormattedTimestamp() _
& ".evt"
errBackupLog = objLogFile.BackupEventLog(backupFilename)
If errBackupLog <> 0 Then
WScript.Echo "The " & strEventLogName & " event log on " _
& strComputer & " could not be backed up."
Else
objLogFile.ClearEventLog()
End If
Next
End Sub
Private Function GetFormattedTimestamp()
Dim timestamp
timestamp = Now
GetFormattedTimestamp = Year(timestamp) _
& LPad(Month(timestamp), 2, "0") _
& LPad(Day(timestamp), 2, "0") _
& "_" & Replace(FormatDateTime(timestamp, 4), ":", "")
End Function
Private Function LPad( _
strValue, _
nLength, _
strPadCharacter)
Dim strPaddedValue
strPaddedValue = strValue
While (Len(strPaddedValue) < nLength)
strPaddedValue = strPadCharacter & strPaddedValue
WEnd
LPad = strPaddedValue
End Function
Вот: http://blogs.msdn.com/b/jjameson/archive/2011/03/01/script-to-clear-and-save-event-logs.aspx
Еще одно примечание из блога: запускайте его с помощью cscript, а не wscript.