自社ローカルネットワーク内にあるサーバーのシステムドライブの空き容量が不足していたため、原因を調査したところ、システムログのアーカイブが容量の半分を占めていたことがわかり、削除対応を行ったので備忘録としてメモします。
環境はHyper-V Server 2012 R2です。
Hyper-V ServerはCUIベースなので、コマンドで作業していきます。
流れとしては、ファイル削除のためのスクリプトを作成し実行させます。
ファイル削除のためのPowerShellスクリプトを作成
最初はdelコマンドで範囲指定すれば削除できるかと簡単に考えていたのですが、できないようなので、コマンドを調べたところ以下のコマンドで対応可能でした。
#対象とするイベントログを羅列
$Log = "System,Application,Security" -split ","
#対象とするイベントログの保持期間(日単位)を設定
$Ret_Day = "3,3,3" -split ","
#ログアーカイブの保持フォルダ(通常はこのままの設定でOK)
$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() }
}
Windowsサーバー上でコマンドプロンプトを開き、任意の場所に空の.ps1ファイルを作成し、上記コードを張付けて保存します。
コメント