у меня вот так получилось. пошловато местами и паузу по обнаружении несходяшихся хэшей я честно стащил у Евгения. если будете пользоваться, протестируйте сначала на датасете, который готовы потерять. ;)
$source_path = "D:\TOOLS"
$destination_path = "E:\TOOLS"
Copy-Item -Path "$source_path\*" -Recurse -Destination $destination_path -Force
$source_path_list = Get-ChildItem $source_path -Force -File -Recurse
$problematic_files = $null
foreach($file in $source_path_list)
{
$source_filehash = Get-FileHash -Algorithm MD5 $file.FullName #тут была ошибка
$destination_filehash = Get-FileHash -Algorithm MD5 ($file.FullName -replace "^D:","E:") #вот так делать просто низко!
if($source_filehash.Hash -eq $destination_filehash.Hash)
{
write-host $file.FullName -ForegroundColor Green
}
else
{
write-host "Source and destination hashes for $($file.FullName) do not match!" -ForegroundColor Red
Read-host "Нажмите Enter чтобы продолжить"
$problematic_files += $file.FullName
}
}
"Problematic files detected: $problematic_files"
а еще, есть такая штука ххкопи. она может побитово сверять скопированное. может занять очень много времени на больших датасетах.
xxcopy.com/xxtb_027.htm#tag_319