【Windows10/WindowsServer2019】PowerShellで日付ログローテート

1.前置き

Windows10/WindowsServer2019でログローテートをやる場合は、PowerShellで組んでしまうのが便利。
ここに記載しているのは日付での対応なので、ファイルサイズによるものは別のサイトへどうぞ。

2.ローテートプログラム

例えば1年に一回ログをローテーションするとした場合、
大まか流れとしては、ファイルを複製⇒複製したファイルのファイル名に昨年日付を付与⇒元のファイルは内容を削除、かつ作成日時も現在時刻に変更、という流れ。
元のファイルの内容を削除せずファイル丸ごと削除でもいいけど、それはログに書き込むプログラム側がログがないから作ろ!って作りになっていたらそれでも問題ない。
というわけでプログラム。
gist.github.com

一番最初の記述は、ログローテート自身のログ出力設定です(ややこしい)。
毎年ではなく毎月でやりたい、といった場合は、以下のように変数を作ってそれを使うようにします。

$sengetu = (Get-Date).AddMonths(-1).ToString("yyyyMM")


作成日が数年経っているログはもういらない、という場合、
例えば2年以上前の特定のフォルダ以下のファイルをまとめて削除する場合は、パスを指定する形でこのように記述。

Get-ChildItem -Path $Path_file_uploader -Recurse | Where-Object{$_.CreationTime -lt (Get-Date).AddYears(-2)} | Remove-Item -Force
G


このPowerShellファイルを先日取り上げたタスクスケジューラで毎年の1月1日や毎月1日に指定してあげれば、ログローテートの完成です。