Как использовать модуль BITS для передачи файлов с помощью PowerShell — CloudSavvy IT
Менее известной функцией Windows является фоновая интеллектуальная служба передачи (BITS). Это сервис, в основном для программистов и системных администраторов, который работает для передачи файлов на серверы HTTP и SMB и с них.
Вот некоторые из невероятно полезных функций этого сервиса:
- Обработка сетевых прерываний
- Пауза и возобновление даже после перезагрузки
- Учитывайте стоимость сети
В этой статье мы рассмотрим, как использовать BITS в PowerShell для выполнения и управления операциями передачи файлов.
Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)
Начало работы с битами
Биты командлеты фактически встроены в команды PowerShell по умолчанию. Мы можем увидеть, что это за команды, запустив Get-Command | Where-Object Source -EQ ‘BitsTransfer’ ,
![]()
НОВАЯ ПАРТНЁРКА НА TWITCH — что такое bits?
Хотя PowerShell 7 является кроссплатформенным, он опирается на службу, специфичную для Windows, поэтому эта функциональность не будет доступна в других операционных системах.
Start-BitsTransfer
Чтобы создать новое задание передачи BITS, к которому вы можете добавлять или удалять файлы, используйте Start-BitsTransfer Командлет. Для простой передачи файлов между двумя местоположениями вы можете определить источник и место назначения, как показано ниже.
По умолчанию передача битов будет выполняться с Foreground приоритет, который подразумевает самую высокую доступную скорость передачи. Это можно легко изменить, используя один из доступных приоритетов, перечисленных ниже.
Как уже упоминалось в начале, BITS обладает уникальной способностью учитывать стоимость сети. Для этого мы используем TransferPolicy параметр.
В этом примере Capped подразумевает, что существует верхняя граница для сетевого трафика и для соблюдения этой границы.
Наконец, чтобы запустить эту работу в фоновом режиме и вернуть нашу консоль для использования, передав Asynchronous Параметр позволяет нам справиться с заданием.
Get-BitsTransfer
Что, если мы хотим проверить все запущенные задания BITS, это просто с Get-BitsTransfer Командлет.
![]()
Так как мы назвали наш перевод с TestTransfer раньше это легко найти. Бег Get-BitsTransfer Сам по себе перечислит все запущенные задания.
Надстройка BitsFile
Теперь, когда мы получили наш перевод, мы можем добавить к нему дополнительные файлы, просто позвонив Add-BitsFile ,
Suspend-BitsTransfer
При передаче всех этих файлов иногда возникает необходимость приостановить передачу. Это может произойти по многим причинам. Часто это происходит из-за перегруженной сети, или система должна быть перезагружена во время передачи. Это просто с битами, используя Suspend-BitsTransfer функциональность.
Токен BIT бесплатно каждый день! Гайд по заработку криптовалюты BitDAO. Амбассадорская программа
$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 также имеет возможность загружать файл даже с аутентификацией.
Важно отметить, что стандартное поведение BITS — автоматическая загрузка нескольких файлов. Это не то же самое с загрузкой, и чтобы обойти это ограничение, вы можете передать несколько файлов на Start-BitsTransfer Командлет.
Если целевой сервер защищен аутентификацией, вы можете указать тип, такой как Basic , Digest , NTLM , Negotiate , или же Passport с помощью Authentication параметр. Конечно, используя аутентификацию, вам нужно будет ввести учетные данные, которые можно легко сделать с помощью Credential параметр. Это занимает стандарт PSCredential объекты и работает хорошо, чтобы сохранить ваши секреты в безопасности и зашифрованы в ваших сценариях.
Вывод
BITS — это фантастический способ контролировать передачу файлов между серверами и между веб-серверами. С возможностью приостановки и возобновления легко контролировать передачу файлов по сетевым ссылкам, даже тем, которые необходимо модерировать из-за потенциальной стоимости.
Несмотря на то, что это работает только в Windows, BITS — это мощный инструмент для интеграции в ваши скрипты и точного управления передачей файлов даже при перезагрузке. Потенциально заменяя традиционные утилиты Windows, такие как Robocopy, BITS придерживается методологии PowerShell и обладает возможностью фоновой передачи в виде заданий, легко интегрируется в существующие средства автоматизации и сценарии.
Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)
Источник: myroad.club
BITS что это за служба в Windows?

BITS — интеллектуальная служба передачи данных между клиентом и HTTP-сервером. При этом при передачи используется интернет, который не используется. Как это? Например у вас интернет-пакет со скоростью 10 мегабит, а вы просто сидите в социальной сети, которая ну никак не может для отправки сообщений использовать все 10 мегабит. И вот то, что не используется — то может взять себе служба BITS для передачи данных) вот как-то так все и работает)
Но где эта служба применяется? Самое главное применение — загрузка обновлений с серверов Microsoft. Обновления могут быть большие и вот чтобы загрузка их не мешала пользователю в плане скорости — то и нужна служба BITS. Вот поэтому то он и интеллектуальная — качает с такой скоростью, чтобы вам не мешать сидеть на сайтах, или например играть в онлайн игру..)
Как я понимаю, основная фишка службы BITS — фоновая загрузка данных, при которой используется не вся скорость интерната, а только неиспользуемая.
Кроме обновлений служба также используется и в антивирусе Microsoft Security Essentials (Windows Defender).
Как я понимаю, эту службу могут использовать и другие программы. Они могут загружать файлы из интернета при помощи этой службы. Для этого программа создает задание, в котором указаны файлы, и потом это задание идет или в очередь или сразу выполняется. В общем это уже больше для разработчиков, вряд ли вам интересно)
Нужно ли отключать службу BITS? Судя по тому где она используется — нет, отключать не стоит, иначе могут быть проблемы со встроенным антивирусом или с обновлениями. Но если вы ни первым ни другим не пользуетесь — то получается отключить можно. Но опять же, а если еще какая-то программа использует эту службу? Нельзя ведь точно знать какие проги используют, а какие нет.
Поэтому.. нет, лучше все таки ее не отключать. Тем более что вряд ли она может грузить ПК — разве что совсем немного и только когда идет передача данных.
Чтобы отключить службу или посмотреть, включена она или нет, то нужно открыть окошко свойств — там есть вся необходимая информация. Как это сделать? А вот как — зажимаете Win + R, вставляете эту команду:
Нажимаете ОК и потом в списке служб находите Фоновая интеллектуальная, нажимаете два раза и будет окошко свойств. Там все будет сказано. Чтобы отключить — в Тип запуска выбираете Отключена и нажимаете кнопку Остановить. Но отключать в итоге все таки думаю что не стоит.
Как и многие системные службы, BITS работает под процессом svchost.exe, тут ничего удивительного нет.
Проверка состояния службы BITS



BITS Administration Utility (bitsadmin.exe)
BITS Administration Utility — инструмент управления службой BITS. Возможно что инструмент из себя представляет команду, так как имеет параметры для запуска из командной строки:

Да, bitsadmin.exe — это команда:

Я точно не знаю — но если интересно, то можете попробовать ввести в командную строку:
И в результате может отобразиться справка по этой команде.
Вирус может использовать BITS
Но я нашел еще кое-что интересное. Впрочем ничего странного нет.. в общем вирусы тоже могут использовать службу BITS. На одном сайте читаю, что некий троян в 2016 году использовал функционал службы для загрузки вирусов на ПК. Ну тут просто без комментариев, я то думал что там в Microsoft это учли и сделали так, что загрузка могла бы быть только с безопасных источников. Но как видим — нет.
Сегодня тот вирус уже вряд ли опасен — информация за 2016 год, а сейчас конец 2018, и скорее всего вирус уже внесен в антивирусные базы.
Нашел даже более точную информацию — вирус назывался Zlob.Q и он использовал BITS для связи с командным центром (Chttp://virtmachine.ru/bits-chto-eto-za-sluzhba-v-windows.html» target=»_blank»]virtmachine.ru[/mask_link]
Сведения о службе BITS
Используйте фоновую интеллектуальную службу передачи (BITS) для скачивания файлов из веб-серверов HTTP или файловых серверов SMB.
BITS продолжает передавать файлы после завершения работы приложения до тех пор, пока пользователь, инициирувший передачу, остается в системе вошедшим и поддерживается сетевое подключение. BITS не будет принудительно выполнять сетевое подключение. BITS возобновляет передачу после того, как сетевое подключение, которое было потеряно, будет восстановлено или после того, как пользователь, выполнивший вход обратно. Дополнительные сведения см. в разделе «Пользователи и сетевые подключения».
BITS соответствует текущим затратам и перегрузкам сети, чтобы фоновое задание не влияло на взаимодействие с передним планом пользователя. BITS использует неактивную пропускную способность сети для передачи файлов и увеличит или уменьшит скорость передачи файлов на основе объема доступной бездействующей пропускной способности сети. Если сетевое приложение начинает использовать больший объем полосы пропускания, BITS снижает скорость передачи, чтобы защитить интерактивное взаимодействие с пользователем. BITS использует политики передачи , заданные приложением, чтобы предотвратить передачу файлов по затратным сетевым подключениям.
BITS также относится к использованию электроэнергии. Начиная с обновление Windows 10 за май 2019 г. BITS будет передавать файлы, если компьютер находится в современном режиме ожидания, и компьютер подключен.
Приложение BITS может использовать различные уровни приоритета BITS, чтобы позволить BITS интеллектуально выбирать задания передачи для выполнения. Задания с более высоким приоритетом выполняются раньше заданий с более низким приоритетом. Задания с одинаковым приоритетом совместно используют время передачи, благодаря чему большие задания не блокируют маленькие в очереди передачи. Задания с более низким приоритетом не получают время передачи, пока задания с более высоким приоритетом не будут завершены или не перейдут в состояние ошибки.
BITS использует Windows BranchCache для однорангового кэширования. Дополнительные сведения см. в обзоре BranchCache.
разработчики универсальная платформа Windows (UWP) должны использовать Windows. API Networking.BackgroundTransfer, а не API BITS.
Существует три типа заданий передачи. Задание загрузки скачивает файлы на клиент, задание отправки отправляет файл на сервер, а задание отправки и ответа отправляет файл на сервер и получает файл ответа от серверного приложения.
В следующих разделах содержатся более подробные сведения о BITS:
- Аутентификация
- Жизненный цикл задания BITS
- Пользователи и сетевые подключения
- Пропускная способность сети
- Групповые политики
- Учетные записи служб и BITS
- Вспомогательные маркеры для заданий передачи BITS
- Согласованность передачи файлов
- Требования к HTTP для загрузки BITS
- Требования к IIS для отправки BITS
- Очистка виртуального каталога
- BITS и восстановление системы
- Тип запуска BITS
- Общий доступ к подключению Интернета
- Кэширование одноранговых узлов
- Безопасность, токены и учетные записи администратора BITS
- BITS Compact Server
Используйте интерфейсы BITS для записи приложений, которые создают и отслеживают задания передачи. Дополнительные сведения об использовании интерфейсов BITS см. в разделе «Использование BITS».
Источник: learn.microsoft.com
Background Intelligent Transfer Service
Вы все еще не знаете, как лучше организовать передачу файлов по сети на компьютеры под управлением Windows? Тогда вам сюда!
Background Intelligent Transfer Service (BITS) – служба ОС Windows, которая может передавать файлы в фоновом режиме. Она используется, в основном, для Windows Update.
Какой же интерес BITS представляет для разработчиков?
1. Возможность закачки файлов в фоновом режиме, незаметно для пользователя
2. Высокий уровень отказоустойчивости. Если сетевой кабель перерубят, или комп выпадет в «синий экран», то BITS докачает файлы, как только это станет возможно.
3. Intelligent сказано не зря. Если пользователь в данный момент ничего не качает и комп простаивает, BITS воспользуется освободившимися ресурсами. Эту фичу можно использовать, назначая различные приоритеты закачек.
Работать с BITS можно через специальный API
В своем проекте я использовал удобную, вполне рабочую «обертку» для .NET. Так же существует еще одна.
Ключевым объектом BITS является Job (не надо дословного перевода, назовем это «закачкой»).
Жизненный цикл «закачки» следующий:
1. Создание Job. Указываем название, описание, тип (UploadDownload) и приоритет
2. Добавление файлов. Job может содержать несколько файлов, если выбран тип Download.
3. Подписываемся на события закачки, если необходимо отслеживать прогресс в реальном времени.
4. Запуск закачки. Далее BITS все делает сам.
Важной особенностью BITS является то, что создать закачку может только пользователь, совершивший вход в систему, либо системная учетная запись. Тем, кто собирается использовать BITS, советую не забывать об этом.
Я сознательно не привожу примеров кода, они есть здесь и здесь.
Для дополнительного ознакомления есть замечательная статья на английском.
Источник: habr.com
Background Intelligent Transfer Service (BITS)
Background Intelligent Transfer Service (сокращенно BITS) — интеллектуальная служба операционной системы Windows, предназначенная для пересылки данных в фоновом режиме.
Служба BITS использует для фоновой передачи данных незагруженную часть трафика сети. В этом режиме Windows Update, остальные службы безопасности Windows, а также другие разрешенные приложения скачивают свои обновления и передают необходимую информацию.
Принцип работы протокола BITS
Для пересылки данных протокол BITS, на основании запроса соответствующего приложения, создает задание, которое активируется и помещается в очередь. Служба BITS может выполнять загрузку необходимых файлов с сервера или производить запись файлов на сервер с извещением о статусе пересылки.
Для передачи файлов может использоваться как фоновый, так и обычный режим. Для передачи в фоновом режиме протокол задействует свободную полосу пропускной способности сети. Если нагрузка на сеть увеличивается за счет использования ее другими приложениями, BITS снижает скорость фоновой передачи данных.
Протокол BITS оперирует тремя уровнями приоритетов для фоновой пересылки и только одним для обычной. Согласно механизма работы службы BITS выполнение заданий с низким приоритетом приостанавливается, пока не обработаются задания с высоким приоритетом. Если несколько заданий имеют один уровень приоритета, они разделяют доступный трафик. Передача особо крупных файлов может приостанавливаться или перемещаться в конец при наличии большой очереди заданий.
Использование протокола BITS в приложениях Windows
Для пересылки данных приложения системы используют следующие СОМ-интерфейсы протокола:
- IBackgroundCopyCallback — уведомляет об окончании передачи, изменении задания;
- IBackgroundCopyError — уведомляет об ошибках;
- IBackgroundCopyFile — уведомляет о файле (данных) в задании на пересылку;
- IBackgroundCopyJob — добавляет файлы в задание, назначает приоритеты, определяет статус задания, выполняет запуск и приостановку загрузки;
- IBackgroundCopyManager — формирует задания на загрузку файлов, информирует о текущих заданиях;
- IEnumBackgroundCopyFiles — уведомляет о количестве файлов в задании;
- IEnumBackgroundCopyJobs — информирует о списке заданий в очереди.
Сервис BITS регулирует механизм пересылки файлов любых размеров, очередность их загрузки, сохраняя запрос на выполнение задачи даже при отключении или перезагрузке системы до полного завершения передачи файла. То есть, при выходе из системы передача файлов приостанавливается, а при входе снова возобновляется. По окончании загрузки приложение, отправлявшее запрос на пересылку данных, информируется о получении файла.
Источник: www.starlink.ru