回答:
GUIを介してすべてのログを一度にクリアする方法はありません。少なくとも私が今までに見つけたことはありません。:)
WEVTUTIL.exeを使用してログをテキストファイルに一覧表示し、そのテキストファイルを使用して各ログを削除するバッチファイルを次に示します。
WEVTUTIL EL > .\LOGLIST.TXT
for /f %%a in ( .\LOGLIST.TXT ) do WEVTUTIL CL "%%a"
del .\LOGLIST.TXT
timeout 30
これをすべて1つのバッチファイルに入れて安全でないと感じる場合は、これを2つの個別のファイルに保存して、次々に実行できます
(「loglist.txt」が見つからない場合、「Nuke」バッチはエラーになります) 「現在のディレクトリにあります。)
@ECHO OFF
REM Source: /superuser//a/655185/389368
WEvtUtil.exe enum-logs > .\LOGLIST.TXT
@ECHO OFF
REM Source: /superuser//a/655185/389368
for /f %%a in ( .\LOGLIST.TXT ) do WEvtUtil.exe clear-log "%%a"
del .\LOGLIST.TXT
timeout 30
Logmanが答えで指摘したように、これは(% 's double for batch file)のようなものを使用することにより、さらに短縮(および中間テキストファイルの必要性を排除)できます。
for /f %%a in ('WEVTUTIL EL') do WEVTUTIL CL "%%a"
timeout 30
どちらの方法を選択した場合でも、必ず「管理者として実行」してください。
私が見つけた最も簡単な解決策。Vista以降で使用しています。:)
wevtutil
システムにあるとは思わない。
cmdプロンプトを開くか、バッチスクリプトを作成して「管理者として実行」:
for /f %x in ('wevtutil el') do wevtutil cl "%x"
すべてのイベントログをクリアするためのPowerShellコード:
wevtutil el | Foreach-Object {Write-Host "Clearing $_"; wevtutil cl "$_"}
または、スクリプトで選択して選択します。
wevtutil.exe cl Analytic
wevtutil.exe cl Application
wevtutil.exe cl DirectShowFilterGraph
wevtutil.exe cl DirectShowPluginControl
wevtutil.exe cl EndpointMapper
wevtutil.exe cl ForwardedEvents
wevtutil.exe cl HardwareEvents
wevtutil.exe cl Internet Explorer
wevtutil.exe cl Key Management Service
wevtutil.exe cl MF_MediaFoundationDeviceProxy
wevtutil.exe cl "Media Center"
wevtutil.exe cl MediaFoundationDeviceProxy
wevtutil.exe cl MediaFoundationPerformance
wevtutil.exe cl MediaFoundationPipeline
wevtutil.exe cl MediaFoundationPlatform
wevtutil.exe cl Microsoft-IE/Diagnostic
wevtutil.exe cl Microsoft-IEFRAME/Diagnostic
wevtutil.exe cl Microsoft-PerfTrack-IEFRAME/Diagnostic
wevtutil.exe cl Microsoft-PerfTrack-MSHTML/Diagnostic
等...
cmdプロンプトまたはPowerShellで次を入力すると、すべてのイベントカテゴリ名の完全なリストを取得できます。
wevtutil el
詳細については、MS TechNetをご覧ください。例:
システムログからC:\ backup \ system0506.evtxにイベントをエクスポートします。
wevtutil epl System C:\backup\system0506.evtx
C:\ admin \ backups \ a10306.evtxに保存した後、アプリケーションログからすべてのイベントを消去します。
wevtutil cl Application /bu:C:\admin\backups\a10306.evtx
wevtutilは非常に遅く、特にすべてのログ(空のログを含む)をクリアした場合
私が思いついた最速のソリューション:
ForEach ( $l in ( Get-WinEvent * ).LogName | sort | get-unique ) {[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$l")}
結果:「4つのログで16個のイベントをクリアしました:0.3684785秒」
各部:
イベントを含むログのみを取得します(LogNameが重複します)
ForEach($ l in(Get-WinEvent *).LogName | sort | get-unique)
それぞれをクリアする
System.Diagnostics.Eventing.Reader.EventLogSession] :: GlobalSession.ClearLog( "$ l")
全機能:
function Clear-EventLogs
{
Begin
{
$t1 = ( Measure-Command -Expression{ $active = ( Get-WinEvent ).LogName } ).TotalSeconds
$totalEvents = $active.Count
$active = $active | Sort | Get-Unique
$totalLogs = $active.Count
}
Process
{
$t2 = ( Measure-Command -Expression{
ForEach ( $l in $active )
{
[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog( "$l" )
# ForEach-Object { Wevtutil.exe cl "$l" }
}
} ).TotalSeconds
}
End { $t3 = $t1 + $t2; Write-Output "Cleared $totalEvents events in $totalLogs logs: $t3 seconds" }
}
「Get-WinEvent:データが無効です」と表示された場合は、文書化されていない256ログというハード制限に達しました。最初にログをフィルタリングする必要がある場合があります。以下は、イベントのあるログのみを選択します(診断のためにhttp://www.powershellish.com/blog/2015/01/19/get-winevent-max-logs/にクレジット):
$logs = Get-WinEvent -ListLog * | Where-Object {$_.RecordCount} | Select-Object -ExpandProperty LogName
ForEach ( $l in ( Get-WinEvent $logs ).LogName | sort | get-unique ) {[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$l")}
名前にスペースが含まれる場合は、delimオプションを使用することが重要です。
WEVTUTIL EL > .\LOGLIST.TXT
for /f "delims=" %%a in ( .\LOGLIST.TXT ) do WEVTUTIL CL "%%a"
イベントログサービスを停止せずに、すべてのイベントログを簡単に無効にすることもできます。
for /f "delims=" %%a in ('WEVTUTIL EL') do WEVTUTIL SL "%%a" /e:false
もちろん、これは実際にインストールされたソフトウェアイベントのみを無効にします。新しいソフトウェアをインストールすると、デフォルトでロギングが有効になります。ただし、タスクスケジューラを実行したままにしておくのは良いことなので、毎月実行するだけです;-)
WEVTUTIL sl /?
、コマンドラインで入力してみてください 。
ところで、これはすべてのログファイルをクリアし、(以前の設定に応じて)かなりのスペースを解放できます
WEVTUTIL EL > .\LOGLIST.TXT
for /f "delims=" %%a in ( .\LOGLIST.TXT ) do WEVTUTIL CL "%%a"
del .\LOGLIST.TXT
timeout 10
.batファイルを使用して、ログファイルのクリアを少し簡単にしました。ここで簡単なスクリプトを選択しましたhttp://winaero.com/blog/how-to-clear-the-windows-event-log-from-the-command-line/
そのリンクからコピーされました。
@echo off
FOR /F "tokens=1,2*" %%V IN ('bcdedit') DO SET adminTest=%%V
IF (%adminTest%)==(Access) goto noAdmin
for /F "tokens=*" %%G in ('wevtutil.exe el') DO (call :do_clear "%%G")
echo.
echo Event Logs have been cleared!
goto theEnd
:do_clear
echo clearing %1
wevtutil.exe cl %1
goto :eof
:noAdmin
echo You must run this script as an Administrator!
echo.
:theEnd
メモ帳を開き、そのテキストをコピーして貼り付けます。
バッチファイルとして保存し、たとえばClEvtLog.batやClEvtLog.cmdなどの名前を付けます。
管理者権限で実行してください。