Чистка логов в Windows - VBS скрипт


Hooko

Уважаемый пользователь
Форумчанин
Регистрация
24.08.2016
Сообщения
230
Репутация
345
Полезный скрипт для чистки логов на серверных ОС. Можно добавить в Scheduled tasks. Сохраняем как "lol.vbs", автозапуск через cscript.exe lol.vbs.


Код:
If WScript.Arguments.Count > 1 Then
   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

Private Sub ClearEventLogs( _
   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)


   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
          objLogFile.ClearEventLog()

   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
 

admz

Пользователь
Форумчанин
Регистрация
24.02.2017
Сообщения
17
Репутация
3
Вариант на bat, для ясности расписал, хотя можно и в одну строку написать.
Код:
@echo off

for /F "tokens=*" %%G in ('wevtutil.exe el') DO (call :do_clear "%%G")
exit

:do_clear
echo clearing %1
wevtutil.exe cl %1
goto :eof
 

Hooko

Уважаемый пользователь
Форумчанин
Регистрация
24.08.2016
Сообщения
230
Репутация
345
Вариант на bat, для ясности расписал, хотя можно и в одну строку написать.

Плюсую... взможно так проще... подобного не использовал.
Кто в танке про тулзу wevtutil.exe, читать -

А может быть так что wevtutil.exe не окажется в системе?
 

admz

Пользователь
Форумчанин
Регистрация
24.02.2017
Сообщения
17
Репутация
3
В семействе операционных систем Windows NT, от Windows 2000 до XP и 2003
журналы событий имеют двоичную структуру, поэтому в них wevtutil.exe отсутствует (для анализа журналов, нужно делать экспорт в csv и тд ... это отдельная история).
Начиная с Windows Vista используется новый XML-формат для хранения записей и началась поддержка центрального сбора записей.
в свою очередь это потребовало новые инструменты для работы среди которых wevtutil.exe

поэтому, начиная с Windows Vistа, wevtutil.exe есть в системе (если его специально не удаляли или не заблокировали)
 

admz

Пользователь
Форумчанин
Регистрация
24.02.2017
Сообщения
17
Репутация
3
тут написано больше и детальней
 

Вложения

  • wev.pdf
    4.3 МБ · Просмотры: 70

adammi

гудериан -первобытный
Форумчанин
Регистрация
01.03.2016
Сообщения
114
Репутация
23
я извиняюсь а для винды это прокатит или не
 

admz

Пользователь
Форумчанин
Регистрация
24.02.2017
Сообщения
17
Репутация
3
даже не знаю как ответить Как об стену !!!,
если кратко "для винды это прокатит"
 
Верх Низ