Untitled
unknown
plain_text
7 months ago
3.2 kB
6
Indexable
$SourceFolders = @(
"\\ServerA\Folder1",
"\\ServerA\Folder2",
"\\ServerA\Folder3",
"\\ServerA\Folder4",
"\\ServerA\Folder5",
"\\ServerA\Folder6",
"\\ServerA\Folder7",
"\\ServerA\Folder8",
"\\ServerA\Folder9",
"\\ServerA\Folder10",
"\\ServerA\Folder11",
"\\ServerA\Folder12",
"\\ServerA\Folder13",
"\\ServerA\Folder14",
"\\ServerA\Folder15",
"\\ServerA\Folder16",
"\\ServerA\Folder17",
"\\ServerA\Folder18",
"\\ServerA\Folder19",
"\\ServerA\Folder20"
)
$DestinationFolders = @(
"\\ServerB\Folder1",
"\\ServerB\Folder2",
"\\ServerB\Folder3",
"\\ServerB\Folder4",
"\\ServerB\Folder5",
"\\ServerB\Folder6",
"\\ServerB\Folder7",
"\\ServerB\Folder8",
"\\ServerB\Folder9",
"\\ServerB\Folder10",
"\\ServerB\Folder11",
"\\ServerB\Folder12",
"\\ServerB\Folder13",
"\\ServerB\Folder14",
"\\ServerB\Folder15",
"\\ServerB\Folder16",
"\\ServerB\Folder17",
"\\ServerB\Folder18",
"\\ServerB\Folder19",
"\\ServerB\Folder20"
)
# Ensure both arrays have the same length
if ($SourceFolders.Count -ne $DestinationFolders.Count) {
Write-Error "The number of source and destination folders must be the same."
exit
}
$OverallDifferences = @()
# Function to compare a pair of folders
function Compare-Folders {
param(
[string]$SourcePath,
[string]$DestinationPath
)
$Differences = @()
# Compare Source -> Destination
$Output1 = robocopy $SourcePath $DestinationPath /L /E /NJH /NJS /NP /TS /FP | Out-String
# Compare Destination -> Source
$Output2 = robocopy $DestinationPath $SourcePath /L /E /NJH /NJS /NP /TS /FP | Out-String
function Parse-RobocopyOutput {
param([string[]]$Lines, [string]$Direction)
foreach ($Line in $Lines) {
if ($Line -match "\\\\") {
$Differences += "$Direction: $Line"
}
}
}
Parse-RobocopyOutput -Lines ($Output1 -split "`r?`n") -Direction "Only in Source"
Parse-RobocopyOutput -Lines ($Output2 -split "`r?`n") -Direction "Only in Destination"
return $Differences
}
# Loop through folder pairs
for ($i = 0; $i -lt $SourceFolders.Count; $i++) {
Write-Host "Comparing: $($SourceFolders[$i]) <-> $($DestinationFolders[$i])" -ForegroundColor Cyan
$Diffs = Compare-Folders -SourcePath $SourceFolders[$i] -DestinationPath $DestinationFolders[$i]
if ($Diffs.Count -eq 0) {
Write-Host "Folders are identical." -ForegroundColor Green
} else {
Write-Host "Differences found:" -ForegroundColor Red
$Diffs | ForEach-Object { Write-Host $_ }
$OverallDifferences += "==== $($SourceFolders[$i]) vs $($DestinationFolders[$i]) ===="
$OverallDifferences += $Diffs
}
}
# Final summary
if ($OverallDifferences.Count -eq 0) {
Write-Host "All folder pairs are identical." -ForegroundColor Green
} else {
Write-Host "Summary of differences:" -ForegroundColor Yellow
$OverallDifferences | ForEach-Object { Write-Host $_ }
}Editor is loading...
Leave a Comment