Как использовать модуль BITS для передачи файлов с помощью PowerShell – CloudSavvy IT
Менее известной функцией 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, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)