指定した2つのフォルダが同期されているかチェックする

スポンサーリンク

はじめに

サーバ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
タイトルとURLをコピーしました