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 многопоточный переключатель, чтобы ускорить процесс, если каталоги содержат большое количество файлов.

Другие вопросы по тегам