2017-01-20 8 views
0

Есть ли способ изменить скорость передачи при запуске сценария PowerShell?Изменение скорости передачи в Powershell

Причина, по которой я прошу, состоит в том, что мне нужно скопировать более ста файлов размером от 200 КБ до под Мэг. Проблема в том, что эти файлы находятся в другом месте в нашей глобальной сети, и наше соединение происходит довольно медленно. Если я попытаюсь скопировать эти файлы в рабочее время, он убьет соединение и службы, привязанные к центральному офису.

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

+4

Трудно комментировать вашу проблему, не видя ваш код. Но похоже, что вы используете 'robocopy.exe', чтобы сделать копию, которая имеет параметр для промежутка между пакетами/IPG, который вы можете изменить, чтобы добавить время между отправкой пакетов для уменьшения полосы пропускания. – BenH

ответ

0

Если вы хотите ограничить использование пропускной способности при копировании файлов с Robocopy вы можете использовать следующий синтаксис:

Чтобы скопировать каталог с помощью /IPG ограничить использование полосы пропускания. Общее правило большого пальца - использовать /IPG: 750, который будет использовать примерно 1Mbps.

Robocopy /ipg:750 /z /r:3 /w:3 /tee /LOG+:c:\robolog.txt \\server01\share \\server02\share 

Более подробно о данном контексте присутствует Robocopy Usage Details

Надеются, что это помогает.

0

powershell имеет командлет start-sleep, чтобы ввести задержку между операциями.

Если вы используете подпрограмму копирования файлов в цикле из списка файлов (возможно, из результата списка каталогов), вы можете поместить начальный сн между копиями каждого файла, чтобы освободить сеть для других действий.

Как сделать то же самое внутри реальной процедуры копирования файлов, вам придется написать собственный скрипт копирования файлов с использованием объектов .NET. Например, вы можете открыть объект FileStream в исходном файле, затем потянуть 4k данных в буфер, затем спящий и повторить. когда вы вытащили все данные, вы можете сохранить их в новом файле.