Синхронизация папок с Powershell - новые и отредактированные файлы - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь синхронизировать 2 папки с Powershell. Сравнение и копирование любых новых файлов работает просто отлично. Но я хочу дополнительно скопировать все файлы, которые были изменены в справочнике Фолера.

Следующий код работает и копирует все новые файлы, созданные в справочной папке.

$folderReference = 'C:\Users\Administrator\Desktop\TestA'
$folderToSync = 'C:\Users\Administrator\Desktop\TestB'

$referenceFiles = Get-ChildItem -Recurse -Path $folderReference 
$FolderSyncFiles = Get-ChildItem -recurse -Path $folderToSync

$fileDiffs = Compare-Object -ReferenceObject $referenceFiles -DifferenceObject $FolderSyncFiles 

foreach ($File in $fileDiffs){
    try {
            if ($File.SideIndicator -eq "<="){

                $FullSourceObject = $File.InputObject.Fullname
                $FullTargetObject = $File.InputObject.Fullname.Replace($folderreference, $folderToSync)

                Write-Host "copy File: " $FullSourceObject
                copy-Item -Path $FullSourceObject -Destination $FullTargetObject
            }
    }
    catch {
        Write-Error -Message "Something went wrong!" -ErrorAction Stop
    }
}

Теперь я также хочу скопировать измененные файлы. Я попытался -property LastWriteTime после Compare-Object, но я получаю исключение WriteErrorException при запуске кода.

У вас, ребята, есть несколько советов, как правильно запустить этот Код? Заранее спасибо

1 Ответ

0 голосов
/ 28 марта 2019

Я бы просто использовал robocopy, он построен специально для задач такого типа и по умолчанию включен в большинство современных версий окон:

robocopy C:\Source C:\Destination /Z /XA:H /W:5
  • /Z - возобновляет копирование при прерывании
  • /XA:H - игнорирует скрытые файлы
  • /W:5 - сокращает время ожидания отказов до 5 секунд (по умолчанию 30)

Стоит просмотреть документация , так как существует практически множество различных вариантов практически для любой ситуации, о которой вы только можете подумать ...

Например, добавьте /MIR, и он удалит все файлы из места назначения, когда они будут удалены из источника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...