Pocket

最近、PowerShellを仕事で使うことが多くなったからかそればっかり上げてるな…

Windowsのイベントログが日付でのローテートに対応していないということは、以前記述した。

で、Windowsに標準で存在しているローテート方式を利用する場合で記述する。個人的に、Windows標準のログのアーカイブファイル作成機能は、どうしても片手落ち感を感じてしまう。

なにせ、作成されたアーカイブファイルは、ユーザが何かしら操作しない限り残ったままで削除されないのだ。3ヶ月分程度の容量を保持していたいのに、いつまでたっても削除されないアーカイブファイル…

という訳で、このアーカイブファイルの削除スクリプトを作った。

Sponsored Links

■イベントログのアーカイブ削除.ps1

<pre>#対象とするイベントログを羅列
$Log           = "System,Application,Security" -split ","

#対象とするイベントログの保持期間を設定
$Ret_Day       = "3,3,3" -split ","

#ログアーカイブの保持フォルダ
$Log_Folder    = "C:\Windows\System32\Winevt\Logs"

for ( $i = 0 ;$i -lt  $Log.count; $i++ ){
            $Log_Name  = "Archive-" + $Log[$i] + "-" +`
             (Get-Date).AddDays(-1*$Ret_Day[$i]).ToString("yyyy-MM-dd") + `
             "-*-*-*-*.evtx"

             Get-ChildItem ($Log_Folder + "\*.*") -include ("Archive-" + $Log[$i] + "*") -Recurse |`
             Where-Object { $_.Name -lt $Log_Name} |`
             Foreach-Object { $_.Delete() }
             }

まぁ、こんな感じ。
お手軽なイベントログ管理を求められた時に使えるか?

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。