Еще один мой старый устаревший друг. Но хоть и устаревший, а старый друг, лучше новых. В первую очередь он лучше потому, что я все еще не нашел времени хорошо ознакомиться со всякими там PoSh-командлетами вида *-BITSTransfer. Во-вторых… Да нет никаких “во-вторых”, как обычно =) Тем не менее команда совершенно великолепная, и я хотел бы сделать ей посвящение этой стьей. Хотя обычно я ее использовал просто чтобы быть уверенным, что нужный мне файл скачается, даже если сетевое подключение пропадало, с ее помощью можно вытворять массу кунштюков: скачать или наоборот закачать файлы, повторить провалившуюся задачу, скачать только определенную часть файла, выставить кучу параметров типа аутентификации… Крутая, в общем =)
Но, повторюсь, у меня она в основном скачивала файлы. Давайте посмотрим как можно реализовать эту задачу на примере.
Начнем с создания задачи:
BITSAdmin /CREATE /DOWNLOAD DownloadJob1
Легко видеть, что задача была создана, ей назначен некий GUID, который Вы можете использовать позднее (я буду использовать имя). А еще прекрасно видно уведомление о том, что команда устарела. =( Давайте посмотрим внутрь созданной задачи:
BITSadmin /LIST /VERBOSE
(ага, МНОГО информации). Очевидно, на данный момент в задаче нет никаких заданий (FILES: 0 / 0), так что давайте кое-что туда добавим:
BITSadmin /ADDFILE DownloadJob1 <URL> <PathToSavedFile>
Все добавилось и даже уже создан временный файл:
добавим еще один:
и увидим второй временный файл:
Оба файла пока имеют размер 0 байт. Теперь мы можем получить больше информации о нашей задаче:
Тут уже видны оба скачиваемых файла (JOB FILES) и… Мы уже можем подождать, когда файлы скачаются? Увы, нет, поскольку задача еще не запущена (STATE: SUSPENDED). Нам нужно запустить ее и это очень просто:
BITSADMIN /RESUME DownloadJob1
Теперь наша задача в состоянии TRANSFERRING, мы можем видеть как много байт (BYTES) или файлов (FILES) уже передано и все такое. И тут – БАМС! Что-то пошло не так и у нас оборвалось соединение: . Будет ли это мешать нашей скачке? Да:
Состояние закачки теперь TRANSIENT_ERROR. Должны ли мы беспокоиться об этом и предпринимать какие-то действия? Нет, поскольку как только соединение восстановится, наша закачка перейдет в состояние QUEUD и потом продолжится автоматически:
Смотреть изредка на эту большую картинку постоянно вводя команду /LIST неинтересно, так что мы будем наблюдать за скачиванием по другому:
BITSadmin /MONITOR /REFRESH 1
Эта команда будет отображать состояние наших задач, периодически (в примере каждую секунду) его обновляя:
Ну и как только наши файлы скачаются:
мы сможем пойти в место, куда из скачивали и… Ой… Что это?
Файлы имеют соответствующие размеры, но их имена… Все нормально, файлы еще в виде временных, поскольку задача не завершена, хотя закачка уже и окончена. Нам остался один последний маленький шажок:
BITSadmin /COMPLETE downloadJob1
Опять “ой”. Похоже, BITSadmin считает имена заданий чувствительными к регистру. Запомним это и введем команду по-новой:
BITSadmin /COMPLETE DownloadJob1
Вуаля! Файлы на своих местах и больше нет никакой работы – все по мне =)
З.Ы. Простите мне этот маленький экзерсис по поводу устаревшей программы: просто не смог удержаться
З.З.Ы. Если она Вам тоже нравится, читаем тут, тут и тут.
2 комментария:
Кошмар какойто. И всё это вместо import-module bitsTransfer
start-bitstransfer урл
1) Да ну ладно тебе - всего-то две команды.
2) Да ты чо! Это ж как в фаллаут тактикс играть вместо второго ;)
3) На самом деле я сразу написал, что надо бы посмотреть на PoSh, но руки не доходят
Выбирай любое объяснение из трех ;)
Отправить комментарий