Как использовать модуль BITS для передачи файлов с помощью PowerShell — CloudSavvy IT

Логотип Powershell

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

Вот некоторые из невероятно полезных функций этого сервиса:

  • Обработка сетевых прерываний
  • Пауза и возобновление даже после перезагрузки
  • Учитывайте стоимость сети

В этой статье мы рассмотрим, как использовать BITS в PowerShell для выполнения и управления операциями передачи файлов.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Начало работы с битами

Биты командлеты фактически встроены в команды PowerShell по умолчанию. Мы можем увидеть, что это за команды, запустив Get-Command | Where-Object Source -EQ 'BitsTransfer',

Хотя PowerShell 7 является кроссплатформенным, он опирается на службу, специфичную для Windows, поэтому эта функциональность не будет доступна в других операционных системах.

Start-BitsTransfer

Чтобы создать новое задание передачи BITS, к которому вы можете добавлять или удалять файлы, используйте Start-BitsTransfer Командлет. Для простой передачи файлов между двумя местоположениями вы можете определить источник и место назначения, как показано ниже.

$Params = @{
	"Source"      = '\\Server01\C$\TestFile.txt'
	"Destination" = '\\Server02\C$\TestFile.txt'
}

Start-BitsTransfer @Params

Чтобы использовать преимущества других командлетов BITS, лучше всего правильно передать задание переноса BITS. DisplayName на это можно будет ссылаться позже. Используя то же самое @Params объявление, мы можем добавить отображаемое имя, в этом случае TestTransfer,

Start-BitsTransfer @Params -DisplayName 'TestTransfer'

По умолчанию передача битов будет выполняться с Foreground приоритет, который подразумевает самую высокую доступную скорость передачи. Это можно легко изменить, используя один из доступных приоритетов, перечисленных ниже.

  • передний план (по умолчанию): переносит задание с наивысшим приоритетом и конкурирует за сетевые ресурсы с другими приложениями.
  • Высокий: Передачи с более высоким приоритетом, чем обычно, но по-прежнему основаны на использовании пропускной способности простоя сети клиентского компьютера.
  • Обычный: То же, что с высоким приоритетом, но с более низким приоритетом.
  • Низкий: То же, что и обычный приоритет, но с наименьшим возможным приоритетом. Start-BitsTransfer @Params -DisplayName ‘TestTransfer’ -Priority ‘Normal’

Как уже упоминалось в начале, BITS обладает уникальной способностью учитывать стоимость сети. Для этого мы используем TransferPolicy параметр.

$Params = @{
	"Source"         = '\\Server01\C$\TestFile.txt'
	"Destination"    = '\\Server02\C$\TestFile.txt'
	"DisplayName"    = 'TestTransfer'
	"Priority"       = 'Normal'
	"TransferPolicy" = 'Capped'
}

Start-BitsTransfer @Params

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

Наконец, чтобы запустить эту работу в фоновом режиме и вернуть нашу консоль для использования, передав Asynchronous Параметр позволяет нам справиться с заданием.

Start-BitsTransfer @Params -Asynchronous

Get-BitsTransfer

Что, если мы хотим проверить все запущенные задания BITS, это просто с Get-BitsTransfer Командлет.

Так как мы назвали наш перевод с TestTransfer раньше это легко найти. Бег Get-BitsTransfer Сам по себе перечислит все запущенные задания.

Надстройка BitsFile

Теперь, когда мы получили наш перевод, мы можем добавить к нему дополнительные файлы, просто позвонив Add-BitsFile,

$Job = Get-BitsTransfer -Name 'TestTransfer'

$Params = @{
	"Source"      = '\\Server01\C$\TestFile2.txt'
	"Destination" = '\\Server02\C$\TestFile2.txt'
}

$Job | Add-BitsFile @Params

Suspend-BitsTransfer

При передаче всех этих файлов иногда возникает необходимость приостановить передачу. Это может произойти по многим причинам. Часто это происходит из-за перегруженной сети, или система должна быть перезагружена во время передачи. Это просто с битами, используя Suspend-BitsTransfer функциональность.

$Job | Suspend-BitsTransfer

Резюме-BitsTransfer

Естественно, в какой-то момент нам нужно будет снова начать работу, и снова это так же просто, как передать работу в Resume-BitsTransfer,

$Job | Resume-BitsTransfer

Set-BitsTransfer

Если работа все еще активна, можно обновить работу новыми настройками, используя Set-BitsTransfer Командлет. В приведенном ниже примере мы устанавливаем для задания максимально возможный сетевой приоритет. Первоначально мы поставили задачу Normal, но мы должны сделать работу раньше, поэтому мы используем Foreground,

$Job | Set-BitsTransfer -Priority 'Foreground'

Complete-BitsTransfer

Возможно, мы приостановили работу и готовы закончить перевод. С помощью Complete-BitsTransfer Командлет, мы можем сказать BITS о завершении всех активных заданий передачи.

Get-BitsTransfer | Complete-BitsTransfer

Remove-BitsTransfer

Наконец, если нам просто нужно удалить работу, запущенную или нет, мы можем использовать Remove-BitsTransfer Командлет.

Get-BitsTransfer -Name "JobToBeRemoved" | Remove-BitsTransfer -Confirm:$False

С помощью -Confirm:$False, означает, что задания будут удалены без запроса подтверждения.

Дополнительные возможности BITS

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

$Params = @{
	"Source"       = '\\Server01\C$\TestFile.txt'
	"Destination"  = ''
	"TransferType" = 'Upload'
}

Start-BitsTransfer @Params

Важно отметить, что стандартное поведение BITS — автоматическая загрузка нескольких файлов. Это не то же самое с загрузкой, и чтобы обойти это ограничение, вы можете передать несколько файлов на Start-BitsTransfer Командлет.

Если целевой сервер защищен аутентификацией, вы можете указать тип, такой как Basic, Digest, NTLM, Negotiate, или же Passport с помощью Authentication параметр. Конечно, используя аутентификацию, вам нужно будет ввести учетные данные, которые можно легко сделать с помощью Credential параметр. Это занимает стандарт PSCredential объекты и работает хорошо, чтобы сохранить ваши секреты в безопасности и зашифрованы в ваших сценариях.

Вывод

BITS — это фантастический способ контролировать передачу файлов между серверами и между веб-серверами. С возможностью приостановки и возобновления легко контролировать передачу файлов по сетевым ссылкам, даже тем, которые необходимо модерировать из-за потенциальной стоимости.

Несмотря на то, что это работает только в Windows, BITS — это мощный инструмент для интеграции в ваши скрипты и точного управления передачей файлов даже при перезагрузке. Потенциально заменяя традиционные утилиты Windows, такие как Robocopy, BITS придерживается методологии PowerShell и обладает возможностью фоновой передачи в виде заданий, легко интегрируется в существующие средства автоматизации и сценарии.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.