コマンドラインを使用して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".:-(セットアップログクリアする方法上の任意のアイデア?
イワン

ああ、問題は、セットアップログが技術的に他とは異なる種類のログであるということです。管理ログではなく、操作ログです。EventLogSession .NETクラスを使用して管理ログと操作ログの両方をクリアできますが、Powershellコマンドレットは明らかにその.NETクラスを使用しません。:(代わりにこのコマンドを試して、すべてのログをクリアしてください:Get-WinEvent -ListLog * -Force |%{Wevtutil.exe cl $ _。logname}
Ryan Ries

さらに良いことに、アスタリスクを消去したいログのリストに置き換えるだけです。アプリケーション、セットアップ、セキュリティなど
ライアンリース

動作しているように見えますが、「DebugChannelのクリアに失敗しました。要求された操作は有効な直接チャネルで実行できません。要求された操作を実行する前にチャネルを無効にする必要があります。」
イヴァン

2
システムログには、常にこれらの「ログクリア」イベントがあります。常に。最後にシステムログをクリアした場合でも、システムログ自体のログクリアイベントが少なくとも1つ残されます。DebugChannelエラーはもう1つの特別なケースであるため、心配する必要はありません。アスタリスクの代わりに、消去するイベントログの特定の名前を使用するだけです。どちらの方法でも機能しますが、エラーを表示したくない場合は、DebugChannelをクリアしないでください。
ライアンリース

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」をインスタンス化せず)、プログラム運用/デバッグ/セットアップログ。1つのログのみをクリアするには、それに応じてコードを変更します。完全ではありませんが、デバッグログが何かによって開かれたままになることがあり、これによりエラーが生成されることはありません。

$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
この答えには説明が必要です。
カスペルド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.