У меня есть ниже 2 объектов, которые дают мне содержимое папки. (Не в локальной windows файловой системе, но в Azure озере данных)
$Gen1Files= $Folder1Details | select FilePath, FileLength
$Gen2Files= $Folder2Details | Select FilePath, FileLength
Папка 1 является источником, а папка 2 является целевой. После копирования данных в целевой объект, я хочу сравнить оба объекта на основе FilePath, и мне нужен хороший результат, экспортированный в CSV, который дает мне такие результаты, как доступный файл, отсутствует файл, совпадает FileLength, отсутствует FileLength et c ..
Я видел команду Compare-Object, но не уверен, смогу ли я использовать ее для этого сценария. пожалуйста, помогите.
Редактировать:
Я написал код ниже, и он работает правильно. Но я чувствую, что код очень длинный и его можно переписать. Какие-нибудь мысли?
ForEach ($Gen1File in $Gen1Files) {
$Gen2Match = $Gen2Files | Where-Object { $_.Path -eq $Gen1File.Path }
If ($Gen2Match) {
# Process the data
if ($Gen1File.Length -eq $Gen2Match.Length) {
$MatchResult += New-Object PsObject -Property @{Gen1FilePath = $Gen1File.Path; Gen2FilePath = $Gen2Match.Path; Gen1FileSize = $Gen1File.Length;
Gen2FileSize = $Gen2Match.Length; IsMatching = "Yes"
}
}
else
{
$MatchResult += New-Object PsObject -Property @{Gen1FilePath = $Gen1File.Path; Gen2FilePath = $Gen2Match.Path; Gen1FileSize = $Gen1File.Length;
Gen2FileSize = $Gen2Match.Length; IsMatching = "No"
}
}
}
else {
$MatchResult += New-Object PsObject -Property @{Gen1FilePath = $Gen1File.Path; Gen2FilePath = ""; Gen1FileSize = $Gen1File.Length;
Gen2FileSize = ""; IsMatching = "No"
}
}
}
# Check if Gen2 files are available in Gen1 Account
ForEach ($Gen2File in $Gen2Files) {
$Gen1Match = $Gen1Files | Where-Object { $_.Path -eq $Gen2File.Path }
If ($Gen1Match) {
# Process the data
if ($Gen2File.Length -eq $Gen1Match.Length) {
$MatchResult += New-Object PsObject -Property @{Gen1FilePath = $Gen1Match.Path; Gen2FilePath = $Gen2File.Path; Gen1FileSize = $Gen1Match.Length;
Gen2FileSize = $Gen2File.Length; IsMatching = "Yes"
}
}
else
{
$MatchResult += New-Object PsObject -Property @{Gen1FilePath = $Gen1Match.Path; Gen2FilePath = $Gen2File.Path; Gen1FileSize = $Gen1Match.Length;
Gen2FileSize = $Gen2File.Length; IsMatching = "No"
}
}
}
else {
$MatchResult += New-Object PsObject -Property @{Gen1FilePath = ""; Gen2FilePath = $Gen2File.Path; Gen1FileSize = "";
Gen2FileSize = $Gen2File.Length; IsMatching = "No"
}
}
}