понедельник, 25 апреля 2011 г.

BITS и PowerShell

Вася Гусев меня пристыдил тем фактом, что я распространял знание о BITSAdmin, вместо соответствующих командлетов PowerShell. Что ж, в какой-то мере он был определенно прав:

  • 1) PowerShell великолепно самодокументирован

2) Писать скрипты на нем намнооого проще, чем в стандартном интерпретаторе комманд

3) Его при некоторых условиях может ыбть чуть проще использовать в некоторых базовых ситуациях типа “просто дай мне этот чертов файл”

4) Многие просто любят PoSh.

Потому я чуток почитал (Disclaimer: действительно “чуток”, потому если ниже есть ошибки, то прошу мне на них указать) и мне показалось, что задача, типа описанной мной в упомянутой статье должна решаться (и Вася тоже так сказалSmile ) одной командой:

Start-BitsTransfer –source <URL> –destination <PathToFile>

но мне, как выяснилось, нужно было лучше изучить вопрос:

image

Оказывается, по-умолчанию модуль для BITS не подгружается. Ок, нужно это дело исправить (а если Вы пользуетесь BITS часто, то лучше это загнать в профиль, тогда не нужно будет делать это каждый раз):

image

и теперь у нас есть наши командлеты:

image

Ну-с, приступим:

image

Отлично, не правда ли? Оно даже показывает прогресс закачки визуально. А вот и не прекрасно, потому что как только я отклчил мой сетевой интерфейс, моя закачка была отменена и я не смог найти никаких ее следов:

image

Даже несмотря на то, что утверждалось, что “BITS will try again” – он так этого и не сделал и не было ни одной зарегистрированной BITS-задачи. Я, если честно, не знаю почему (пусть мне объяснят =) ), но нашел как этого избежать. Просто добавьте параметр “-Asynchronous” к строке и все сработает как нужно, хотя уже и нельзя будет увидеть этот прекрасновидный статус загрузки:

image

image

Однако, даже несмотря на то, что статус закачки сменился в конце концов на “Transferred”, в целевой папке был только .tmp файл. На самом деле, команда без параметра “-Asynchronous” просто выыкладывает Вам файл, куда нужно, но мы уже знаем недостатки этого метода. Так что я вынужден был закатить солнце закончить закачку вручную:

image 

В общем, не слишком большая разница с BITSAdmin. К тому же я не смог найти как добиться такого же эффекта, как с fasion BITSAsmin /MONITOR.

Суммируя:

1) PoSh при скриптинге - рулит

2) Вы можете использовать для интерактивных задач любой набор команд, который Вам нравится. Однако помните, что BITSAdmin могут отменить в любой момент

Потому, пока я не прочитаю внимательно все сам или мне не объяснят, как делать по другому, я буду использовать PoSh, везде, где смогу, а мониторить задачи буду с помощью BITSAdmin. ;)

2 комментария:

Анонимный комментирует...

Саша, очень полезный пост, спасибо. Уже даже попробовал. Посмотри форматирование - не знаю почему - в IE9 иллюстрации выезжают далеко вправо и смешиваются с текстом в правой колонке.

Alexander Trofimov комментирует...

Ага, спасибо. Пора на Wordpress съезжать.