Philip Wiki

Персональный wiki-сайт

Инструменты пользователя

Инструменты сайта


docs:blog:2025:11

ProgressPreference и PowerShell 5

Я давно стараюсь не пользоваться Windows PowerShell 5, перейдя на 7 версию, но иногда приходится сталкиваться с неожиданными нюансами в работе «старичка» там, где нет новой версии. Так и случилось на днях, когда я игрался со скриптом для песочницы.

Проблема заключалась в том, что мне нужно было скачать файл на 200 мегабайт, для чего я пытался использовать командлет Invoke-WebRequest. Но я так и не смог дождаться его завершения…

Абсурдность этой проблемы заключается в том, как она решается. Но для начала немного статистики:

  • Скачивание файла на 200 мегабайт без предварительной настройки занимает 15 минут
  • Скачивание этого же файла после небольших манипуляций 20 секунд

В чём же проблема, что за волшебство надо сделать, чтобы скорость так подросла? А я скажу. Просто отключить статус выполнения (прогресс) через следующую команду:

Set-Variable ProgressPreference SilentlyContinue

И всё. При выполнении Invoke-WebRequest для скачивания файла мы больше не видим статус выполнения, при этом скорость выполнения вырастает просто космически.

Ошибка

  • Данная проблема уже решена в Powershell 6 и выше (который до сих пор необходимо устанавливать самостоятельно)
  • Ещё альтернативным решением на старых версиях может быть использование командлета Start-BitsTransfer, но для его работы вы должны быть уверены в запуске службы BITS.
Только авторизованные участники могут оставлять комментарии.
docs/blog/2025/11.txt · Последнее изменение: philip

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki