はじめに
サーバAの特定フォルダには不定期に申請書が届きます。重要な申請書なので1時間ごとにサーバBの同じパスに同期します。正しく同期ができているかをチェックするスクリプトです。
環境
OS:Windows10
.Net Framework:4.7
PowerShellのバージョン:5.1.17763.1007
ソースコード
「C:\temp」と 「C:\temp2」フォルダが同期されているか確認します。
#######################################################################################
# 概要:指定した2つのフォルダ配下が同じ構成かチェックします。
# 作成者:ITStudy
# 作成日:2022/04/25
#######################################################################################
$CurrentDir = $PSScriptRoot
$Report = "Report-$(Get-Date -f yyyyMMdd).txt"
$path1 = "C:\temp"
$path2 = "C:\temp2"
cd $path1
$list1 = Get-ChildItem $path1 -recurse -force | Where-Object {$_.LastWriteTime -ge (Get-Date).AddMinutes(-60)} | Resolve-Path -Relative
cd $path2
$list2 = Get-ChildItem $path2 -recurse -force | Where-Object {$_.LastWriteTime -ge (Get-Date).AddMinutes(-60)} | Resolve-Path -Relative
$join = &{$list1;$list2}
$group_list = $join | group
$mismatch_check = $group_list | ?{$_.count -eq 1} | Select -expand Name
if($mismatch_check -eq $null){
"一致" | Out-File (Join-Path $CurrentDir $Report) -Encoding Default
}else{
&{"不一致";$mismatch_check} | Out-File (Join-Path $CurrentDir $Report) -Encoding Default
}
動作確認
スクリプトを実行すると「Report-YYYYMMDD.txt」が作成されます。指定した2つのフォルダが同期されていたら「一致」と表示されます。
一致
一致しなかった場合は、「不一致」の表示と対象のファイルが表示されます。
不一致
.\Folder1\test3.txt