Предполагая, что нам нужны все файлы в месте назначения, когда мы закончим, и список файлов - это просто список имен файлов без пути, мы просто извлекаем существующее, используя рекурсивный get-childitem, затем копируем все файлы в место назначения, используя -force. -confirm: $ false и изменить существующий список с нашим списком файлов. Вы столкнетесь с ошибками, потому что у вас нет информации о пути, и вы рискуете получить дубликаты из-за вложенных папок и -recursive. Вместо этого вытащите все в режиме реального времени, точно так же, как это сделали бы robocopy или rsyn c, и сработайте и сделайте запись:
$source = "C:\Folder-A"
$destination = "C:\Folder-B"
$logfile="C:\logfile.csv"
$files=@()
$existinglist=(Get-ChildItem $destination -Recurse -erroraction silentlycontinue)
$file_list = (Get-ChildItem $source -Recurse -erroraction silentlycontinue)
foreach ($file in $file_list){
if ($existinglist.Name -contains $file.name){
$filedestination=$existinglist |?{$_.name -like $file.name}
Copy-Item $file.fullname -Destination $filedestination.fullname -force -confirm:$false
$tempitem1=new-object pscustomobject
add-member -InputObject $tempitem1 -NotePropertyName "filename" -NotePropertyValue $file
add-member -inputobject $tempitem1 -NotePropertyName "existed" -NotePropertyValue $true
$files+=$tempitem1
}else{
Copy-Item $file.fullname -Destination $destination -force -confirm:$false
$tempitem1=New-Object pscustomobject
add-member -InputObject $tempitem1 -NotePropertyName "filename" -NotePropertyValue $file
add-member -InputObject $tempitem1 -NotePropertyName "existed" -NotePropertyValue $false
$files+=$tempitem1
}
$files |export-csv -path $logfile -NoTypeInformation
Я предполагаю, что это для образовательных целей, поскольку вы новичок в powershell и любопытно, что здорово, и почему у нас есть ответ и объяснение с кодом. В производстве мы должны использовать robocopy https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy или * nix we go для rsyn c https://wiki.archlinux.org/index.php/Rsync. Надеюсь, это поможет!