web-dev-qa-db-ja.com

コマンドラインを使用してWindowsイベントログをクリアする方法

通常は、コンピューター管理コンソールを開き、イベントビューアースナップインに移動し、Windowsログフォルダーを開き、Application/Security/Setup/Systemサブフォルダーを右クリックし、[ログのクリア]を選択して、Clearを押して確認します。 Save and Clearボタン。

十分な権限を持っているのに、確認リクエストを出さずにコマンドラインを使用して同じ効果を得るにはどうすればよいですか?

14
Ivan

パワーシェル。

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

デフォルトはnotですが、プロンプトを表示しますが、プロンプトを表示する場合は-Confirmスイッチを指定できます。

編集:

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

コメントのとおり、操作ログと管理ログの両方を取得する必要があります。

14
Ryan Ries

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でクリアしながらバックアップすることもできます

8
mprill

次の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) }
  }
}

すべてのログをクリアしたい場合:

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

here から抽出。

これは、PowerShellを介してすべてのイベントログをクリアする方法です。管理者として実行していることを確認してください

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

0
neoghost