ログをバックアップする

ログを格納しているフォルダ内にサブフォルダを作成して、ログをバックアップするプログラムを作成しました。具体的にログを格納しているフォルダは以下です。

フォルダログ
C:\logs
application_yyMMdd.txt
security_yyMMdd.txt
system_yyMMdd.txt
(※yyMMddは前日日付)
新しく作成するサブフォルダは以下です。
フォルダサブフォルダ
C:\logs
yyMMdd
※yyMMddは前日日付
サブフォルダの中にログをバックアップします。サブフォルダを作成する前に同名のフォルダがないか確認します。確認するにはtest-pathというコマンドレットを使用します。これは、指定したパスが存在する場合は真偽値のtrueを返します。存在しない場合はfalseを返します。フォルダを作成するにはnew-itemというコマンドレットを使用します。引数に作成するフォルダのパスとタイプ(今回はDirectory)を指定します。ファイルの移動は、コピーしてから元ファイルを削除する処理にしました。ファイルのコピーはcopy-itemコマンドレットを使用します。ファイルの削除はremove-itemコマンドレットを使用します。以下プログラムです。

# ----------------------------------------
# ログをバックアップする
# 対象ファイル: C:\logs\application_yymmdd.txt
#            C:\logs\security_yymmdd.txt
#            C:\logs\system_yymmdd.txt
# バックアップ先: C:\logs\yymmdd
# ----------------------------------------
set-PSDebug -strict

# 前日日付の取得
$today = get-Date
$yesterday = $today.AddDays(-1)

# ログ取得
$log_folder = "C:\logs"
$logs  = get-ChildItem -path "C:\logs"

# バックアップフォルダが既に存在するか確認
$backup_folder = $log_folder + "\" + $yesterday.ToString("yyMMdd")
$result = test-Path -path $backup_folder
if ($result) { throw "バックアップフォルダが既に存在します" }

# バックアップフォルダ作成
new-Item -path $backup_folder -type Directory > NULL

# ログをバックアップフォルダへコピー
foreach ($log in $logs){
   Copy-Item $log.FullName -destination $backup_folder
}

# コピー元ファイルを削除
foreach ($log in $logs){
   remove-Item $log.FullName
}

write-Host "完了しました"

trap{
    break
}