명령 줄을 사용하여 Windows 이벤트 로그를 지우는 방법은 무엇입니까? 콘솔을 열고 이벤트 뷰어

일반적으로 컴퓨터 관리 콘솔을 열고 이벤트 뷰어 스냅인으로 이동하여 Windows 로그 폴더를 열고 Application/Security/Setup/System하위 폴더를 마우스 오른쪽 단추로 클릭 한 다음 로그 지우기를 선택하고 Clear또는 Save and Clear버튼 을 눌러 확인할 수 있습니다 .

충분한 권한이 있으면 확인 요청을하지 않으면 서 명령 줄을 사용하여 동일한 효과를 얻을 수 있습니까?



답변

파워 쉘.

PS C:\>Clear-Eventlog -Log Application, System

기본값은 프롬프트 는 아니지만 프롬프트를 표시하려는 경우 -Confirm 스위치를 제공 할 수 있습니다.

편집하다:

Get-WinEvent -ListLog Application,Setup,Security -Force | % { Wevtutil.exe cl $_.Logname }

의견에 따르면 운영 로그와 관리 로그가 모두 있어야합니다.


답변

wevtutil enum-logs로그를 wevtutil clear-log지우는 동안 시스템의 모든 로그를 열거합니다 . 귀하의 경우 다음과 같습니다.

wevtutil clear-log Application
wevtutil clear-log Security
wevtutil clear-log Setup
wevtutil clear-log System

지우면서 백업 할 수도 있습니다 wevtutil clear-log System /backup:backup.evtx


답변

이 경우 모든 로그지우고 싶습니다 .

for /f %x in ('wevtutil el') do wevtutil cl "%x"

여기 에서 추출되었습니다 .


답변

다음 PowerShell 은 “wevtutil”프로세스를 인스턴스화하지 않고 프로그래밍 방식으로 운영 / 디버그 / 설정 로그를 포함 하여 로컬 컴퓨터의 모든 이벤트 로그를 지 웁니다 . 하나의 로그 만 지우려면 코드를 적절히 수정하십시오. 그러나 완벽하지는 않지만 디버그 로그가 무언가에 의해 열린 상태로 유지되므로 오류가 발생하지 않습니다.

$EventLogs=Get-WinEvent -Force -ListLog *
$EventSession=new-object System.Diagnostics.Eventing.Reader.EventLogSession
foreach ($Log in $EventLogs) {
  if ($Log.IsEnabled) {
    if ($Log.RecordCount -gt 0) {
      if ($Log.LogType -eq "Debug") {
        $Log.IsEnabled=$false
        $Log.SaveChanges()
        $EventSession.ClearLog($Log.LogName)
        $Log.IsEnabled=$true
        $Log.SaveChanges()
      }
      else { $EventSession.ClearLog($Log.LogName) }
  }
}

답변

Powershell을 통해 모든 이벤트 로그를 지우는 방법입니다. 관리자로 실행 중인지 확인하십시오.

wevtutil el | Foreach-Object {wevtutil cl "$_"}