Acredito que o seguinte script do PowerShell deve fazer o trabalho. É provavelmente longe de ser o ideal, já que ele está fazendo uma busca recursiva completa da pasta de origem para cada arquivo, então você pode querer tentar refazê-lo um pouco. Eu sugiro strongmente testá-lo com dados e pastas não críticos primeiro. Fiz alguns testes com um pequeno conjunto de arquivos de amostra e ele correu bem, mas os arquivos em seu ambiente podem não ser tão simples.
Observe que pode haver algum comportamento inesperado se um arquivo que você está procurando não existir na pasta de origem ou se houver vários arquivos na pasta de origem que tenham o mesmo nome que o procurado.
$DestDIR = 'C:\Destination'
$OrigDIR = 'C:\Origin'
Get-ChildItem $OrigDir | ForEach-Object {
$OrigName = $_.Name
$OrigPath = $_.FullName
Get-ChildItem $DestDIR -Recurse | Where-Object {$_.Name -eq $OrigName} | ForEach-Object {
$DestPath = $_.FullName
Copy-Item $OrigPath $DestPath -Force
}
}