PowerShell Copy-Item не копирует все файлы
У меня странная проблема с Copy-Item в PowerShell. Ниже вы видите две практически идентичные строки кода, только источник и назначение различны.
Copy-Item "A:\*" -Destination "B:\" -Recurse -Force -Verbose -Confirm:$false -ErrorAction SilentlyContinu
Start-Sleep 3
Copy-Item "B:\*" -Destination "D:\" -Recurse -Force -Verbose -Confirm:$false -ErrorAction SilentlyContinu
Эти строки являются частью скрипта. Сначала он записывает дату и создает файл журнала, а затем очищает диск B и D. После этого начинается копирование. Первый, Copy-Item A:\ to B:\ работает, он копирует все.
Когда PowerShell попадает во вторую, он копирует только несколько папок и просто пропускает оставшиеся папки. Это не бросает мне ошибку или что-нибудь.
Когда я вручную выполняю вторую строку, она работает, но не в сценарии.
Что здесь не так?
1 ответ
Я бы использовал для этого robocopy, он включен во все современные версии окон, очень мощный и может выполнять практически любую функцию копирования.
ROBOCOPY /MIR <Source> <Target>
/MIR
это переключатель зеркала. Он скопирует источник в цель и удалит в цели все, чего нет в источнике. Оставляя цель как зеркальную копию источника.
Вы также можете посмотреть в /MT
многопоточный переключатель, чтобы ускорить процесс, если каталоги содержат большое количество файлов.