Я пишу сценарий PowerShell, который должен иметь возможность загружать много больших файлов со многих серверов (то есть хостов Windows Server) одновременно. Многие из этих серверов могут использоваться для важных действий, и поэтому важно, чтобы метод передачи имел возможность переходить в фоновый режим, когда нагрузка на серверы начинает становиться высокой.
Вот 3 метода передачи, которые я знаю, и причины, почему я не думаю, что они достаточно хороши для работы.
BitsTransfer: первым, что пришло на ум, был BitsTransfer (https://docs.microsoft.com/en-us/powershell/module/bitstransfer/start-bitstransfer?view=win10-ps), однако существует фатальная проблема при таком подходе он не может передавать файлы, которые используются для записи другими процессами, и многие файлы, которые необходимо загрузить с серверов, будут в таком состоянии. Смотрите start-bitstransfer: процесс не может получить доступ к файлу, потому что он используется другим процессом для этой проблемы ...
Copy-Item: Это не дает контроля над его приоритетом, и поэтому существует вероятность того, что большая передача файлов может привести к остановке сервера во время обработки важной нагрузки.
Robocopy: Опять же, я не вижу упоминания о приоритетах или фоновой обработке.