PowerShell Copy-Item не копирует все файлы - PullRequest
0 голосов
/ 29 августа 2018

У меня странная проблема с 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 Ответ

0 голосов
/ 31 августа 2018

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

ROBOCOPY /MIR <Source> <Target>

/MIR - переключатель зеркала. Он скопирует источник в цель и удалит в цели все, чего нет в источнике. Оставив цель как зеркальную копию источника.

Возможно, вы захотите заглянуть в многопоточный коммутатор /MT, чтобы ускорить работу, если каталоги содержат большое количество файлов.

...