*-FileTransfer

Недавно я понял почему в Internet Explorer не нужен “Download Manager”, и решил отказаться от одной из своих любимых утилит – wget.exe (да, да, порт с *nix).

Что же произошло? Всё просто, я попробовал в действии группу командлетов *-FileTransfer, которая прилагается к PowerShell 2.0, и которую уже можно пощупать своими руками например в Windows 7 или Windows Server 2008 R2. Эти командлеты используют технологию BITS. В технические тонкости вдаваться не буду, лишь скажу что это служба для загрузки файлов которая используется например в Windows Update. Она может использовать свободный канал для закачки файлов, не затрудняя работу в интернете, или может наоборот качать в высокоприоритетном режиме. Работы BITS можно останавливать и возобновлять. Они самостоятельно пытаются продолжить закачку файлов после обрывов связи. Да что там обрывы! Даже если компьютер с закачкой выключится – после включения BITS продолжит свои работы с того места где остановился.

К сожалению для использования BITS раньше был доступен лишь API, и не слишком дружелюбная утилита bitsadmin.exe. Теперь же с PowerShell 2.0 у нас есть крайне удобные командлеты. Для их использования, необходимо подгрузить в оболочку соответствующий модуль – FileTransfer. Это делается командлетом Import-Module или просто imo:

imo filetransfer

После этого смотрим доступные командлеты с помощью Get-Command:

gcm -Module filetransfer

Сегодня я покажу лишь простейший режим использования. Для него вам достаточно перейти в ту папку куда вы хотите сохранить файлы, и запустить New-FileTransfer указав ему в качестве аргумента URL загружаемого файла.

bits

Если вы хотите сохранить файл под другим именем, то можете использовать параметр –ClientFileName. Параметр –Priority как можно догадаться, задаёт приоритет закачки – возможные аргументы: Foreground, High, Normal, Low.

Но это разумеется лишь базовый функционал. О самом интересном я постараюсь рассказать в следующем посте😉

PS: Остановить эту закачку можно нажав Ctrl+C. Простое закрытие окна или другие мелочи, типа перезагрузки компьютера, не волнуют BITS🙂 Он всё равно будет продолжать закачку. В таком случае вы можете выполнить в любом окне PowerShell (с загруженным модулем FileTransfer) команду Get-FileTransfer чтобы посмотреть статус всех загрузок, а командой Get-FileTransfer | Clear-FileTransfer, остановить их все🙂

комментариев 14 to “*-FileTransfer”

  1. Sane Says:

    А в CTP это можно как-то посмотреть?

  2. Xaegr Says:

    2 Sane: Вроде бы да, в CTP 3… Сейчас просто нет машинки с ним, но попробуйте🙂
    Список доступных модулей можно посмотреть вот так:
    ls $PSHOME\modules

  3. Denis Says:

    >> Недавно я понял почему в Internet Explorer не нужен “Download Manager”
    Ну, уж сомневаюсь, что в процессе работы над ИЕ, даже в 6.0, думали, «Вот… погодите, скоро PoSh 2.0 выйдет, будете качать»,🙂
    А если и думали, то не для простого пользователя , верно? ))

    • Xaegr Says:

      Конечно не думали🙂 Просто для меня менеджер закачек уже не нужен😉
      А в IE его не будет по другим причинам скорее всего — потому что уже поздно, везде broadband, а для больших файлов на ресурсах MS есть встроенная качалка.

  4. zorion Says:

    А качать не файлы а сразу папками?

  5. Anonymous Says:

    Вот изврат-то. В файерфоксе, к примеру, прекрасный менеджер закачек. И Останавливать можно и продолжать. Зачем так извращаться для элементарных задач?

  6. Xaegr Says:

    2 Anonymous: Изврат это устанавливать сторонний небезопасный браузер для обеспечения функционала который уже реализован в ОС на отличном уровне😉 Это разумеется IMHO😉

  7. Андрей Бешков Says:

    Мне кажется что как и с самой ОС тенденция развития IE будет следующая. Все больше и больше задач выполняемых в IE будут генерить код на Powershell и затем исполнять его. А уже вокруг этого появится обвязка в виде GUI.

  8. Tempter Says:

    » решил отказаться от одной из своих любимых утилит – wget.exe (да, да, порт с *nix)»
    «Изврат это устанавливать сторонний небезопасный браузер для обеспечения функционала который уже реализован в ОС на отличном уровне»
    Простите, а устанавливать wget и устанавливать другое ПО, пусть для тех же функций не одно и тоже?😉

  9. Xaegr Says:

    wget устанавливать не надо😉

  10. Vadim Sterkin Says:

    >О самом интересном я постараюсь рассказать в следующем посте
    Ждем-с. Очень интересует аналоги
    wget -c -nc -o log.txt -i list.txt
    wget -r -l 2 -k -np —random-wait 🙂

  11. Xaegr Says:

    2 Vadim Sterkin: Первую строчку наверное повторю, а вот вторую…😉 Командлеты PS всё же предоставляют именно базовый функционал, и функционала граббера-сайтов не стоит ожидать🙂 Можно конечно написать соответствующий скрипт, но это не интересно😉

  12. kmihas Says:

    я конечно не профессионал в powershell, но считаю, что напрасно в качестве примера взяли wget .. ибо возможностей у нее куда больше чем просто закачка файла .. хотя бы к примеру как вы сделаете в powershell создание зеркала сайта с конвертированием ссылок? а для wget хватило пары минут прочитать справку .. wget «http://www.site.ru» -P «D:/Downloads/» -c -F -B «http://www.site.ru/» -r -l 9 -p -k -m

  13. BitsTransfer « PowerShell и другие скрипты Says:

    […] для передачи файлов с использованием BitsTransfer (раз, два), но думаю стоит вспомнить о них еще разок. Дело в […]


Обсуждение закрыто.

%d такие блоггеры, как: