Модуль PowerShell для загрузки файлов.
Invoke-Webrequest требует, чтобы вы предоставили выходное имя файла, которое вы, возможно, не знаете заранее, и не всегда возможно извлечь его из URL.
Он также содержит весь файл в памяти во время загрузки, что является плохими новостями при загрузке больших файлов.
Он не сохранит модифицированную дату исходного исходного файла, как и многие браузеры.
Также (в Windows PowerShell с настройкой $ ProgressPreference по умолчанию) строка прогресса обновляется так часто, что он резко замедляет загрузку.
Start-BitsTransfer может автоматически определять имя файла, но оно не работает для всех URL-адресов и поддерживается только в Windows.
Некоторые URL -адреса требуют, чтобы различные пользовательские агенты успешно подключались.
Этот модуль решает эти проблемы:
Он использует класс .net httpclient (который теперь рекомендуется для использования Microsoft в течение устаревшего класса WebClient).
Сначала он попытается взять имя файла из заголовка дискозирования контента. Заголовки получают с помощью обычного запроса GET (как показали некоторые веб -серверы, чтобы отказаться от запросов головы). Если этот заголовок не присутствует, он извлечет имя файла из абсолютного URL (поскольку предоставленный URL может перенаправить в другом месте).
Файл транслируется непосредственно на диск, а не удерживает его полностью в памяти.
Модифицированная дата будет обновлена после того, как загрузка будет завершена в соответствии с последним модифицированным заголовком, если он найден.
Бар прогресса ограничена обновлением каждые 250 мс, чтобы предотвратить чрезмерное использование системных ресурсов.
Строки пользователя для Chrome и Googlebot Web Crawler будут предприняты по умолчанию.
Установите из галереи PowerShell, выполнив следующую команду:
Install -module -name psdownload
Resolve-Uri "https://aka.ms/vs/17/release/vc_redist.x64.exe"
Это вернет абсолютный URI (перенаправленный URI), а также имя файла, размер файла и дата последней модифицированной, если они доступны в заголовках ответов.
Infoke -download -uri "https://aka.ms/vs/17/release/vc_redist.x64.exe" -destination "$ env: userprofieledownloads"
Это загрузит файл в папку загрузки.
Также поддерживается ввод трубопровода:
"https://aka.ms/vs/17/release/vc_redist.x64.exe","https://aka.ms/vs/17/release/vc_redist.x86.exe" | Inloke -download -destination "$ env: userprofiledownloads"
URL также принимается как псевдоним URI .
Дополнительные параметры:
Имя файла
Используйте это, чтобы переопределить имя файла, а не пытаться автоматически определять.
Пользовательский
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebkit/537.36 (khtml, как гекко) Chrome/116.0.0.0 Safari/537.36
GoogleBot/2.1 (+http: //www.google.com/bot.html)
Переопределить пользовательский агент по умолчанию. По умолчанию он пройдет через использование:
Заголовки
По умолчанию @{'Accept' = ' / '}, который необходим для того, чтобы обмануть некоторые серверы в обслуживание загрузки, например, от Filezilla.
Темппат
По умолчанию загрузка в процессе будет сохранена до % temp % / $ env: temp.
Игнорировать
Игнорируйте заголовок, модифицированный датой, модифицированный будет датой, когда файл был загружен вместо этого.
Блокфил
Отметьте файл, загруженный из Интернета (по умолчанию он не делает этого).
Noclobber
Используйте это, чтобы предотвратить перезапись существующего файла.
Noprogress
Подавить планку прогресса.
Песа
Возвращает объект FileInfo в конвейер для загруженного файла.
Это было проверено на большое количество URL -адресов, пожалуйста, отправьте проблему, если он не может загрузить конкретный файл. Обратите внимание, что некоторые веб -страницы могут запустить какой -то JavaScript, чтобы запустить фактическую загрузку. Этот тип URL-адреса не поддерживается, он должен указывать непосредственно на ресурс без необходимости выполнять какие-либо сценарии на стороне клиента.