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


14

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

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

답변:


13

파워 쉘.

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

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

편집하다:

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

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


감사 powershell -Command "Clear-Eventlog -Log Application, System"합니다. 그러나 설치 로그의 경우 The Log name "Setup" does not exist in the computer "localhost".:-( 설치 로그 를 지우는 방법에 대한 아이디어가 있습니까?
Ivan

문제는 설정 로그가 기술적으로 다른 종류의 로그라는 것입니다. 관리 로그 대신 작동 로그입니다. EventLogSession .NET 클래스를 사용하여 관리 및 작업 로그를 모두 지울 수 있지만 Powershell cmdlet은 해당 .NET 클래스를 사용하지 않는 것 같습니다. :( 대신 모든 로그 를 지우려면이 명령을 사용하십시오 . Get-WinEvent -ListLog * -Force | % {Wevtutil.exe cl $ _. logname}
Ryan Ries

더 좋은 방법은 별표를 지우려는 로그 목록으로 바꾸는 것입니다. 응용 프로그램, 설정, 보안 ... 등
Ryan Ries

작동하는 것 같지만 "로그 DebugChannel을 지우지 못했습니다. 요청 된 작업을 활성화 된 직접 채널을 통해 수행 할 수 없습니다. 요청 된 작업을 수행하기 전에 먼저 채널을 비활성화해야합니다."
Ivan

2
시스템 로그에는 항상 "로그 지우기"이벤트가 있습니다. 항상. 시스템 로그를 마지막으로 지우더라도 시스템 로그 자체에 대해 하나 이상의 로그 지우기 이벤트가 남게됩니다. 또 다른 특별한 경우이므로 DebugChannel 오류에 대해 걱정하지 마십시오. 별표 대신 지우려는 이벤트 로그의 특정 이름 만 사용하십시오. 어느 쪽이든 작동하지만 오류를보고 싶지 않으면 DebugChannel을 지우려고하지 마십시오.
Ryan Ries

8

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



2

다음 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) }
  }
}

0

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

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


2
이 답변에는 설명이 필요합니다.
kasperd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.