Файл Webclient.DownloadFile() .aspx не открывается

Я использую PowerShell в первый раз. Я научился загружать файлы с помощью веб-клиента, используя следующий код.

$client = New-Object System.NET.Webclient
$client.DownloadFile( $url, $path )

Похоже, это хорошо работает для того, что я пытаюсь в конечном итоге сделать, то есть загрузить несколько файлов с веб-страницы одновременно. Я попробовал это на сайте, файлы которого отформатированы как файлы.pfva, которые открываются в формате PDF. нет проблем. Это был защищенный паролем сайт тоже.

Итак, переходя на сайт, я действительно хочу использовать его. Опять же, сайт, требующий входа, хотя я просто захожу в браузер, а затем запускаю веб-клиента. Вероятно, почему я никогда не должен проходить аутентификацию в командном скрипте....

Файлы этого сайта отформатированы как файлы.aspx. Они должны быть открыты в виде файлов PDF. Я могу просто щелкнуть файл, сохранить или открыть, и он, естественно, работает как файл PDF. Но когда я использую файл webclient.download, он загружается в нужное место... но я получаю сообщение об ошибке при попытке открыть его.

"Adobe не может открыть файл. Он не был правильно закодирован" ... что-то в этом роде. Я не могу передать сообщение сейчас, потому что я на работе. URL для загрузки в следующем формате.....

https://www.WebsiteABC.com/ShowDocument.aspx?DocPath=%7e%5cDocument%5cb75c6093-697a-4e59-bc26-fa2eb24f57f7%5cAUTHORIZATION.PDF

Почему он не открывается!?! Это можно обойти. Любая помощь будет оценена. Спасибо!.

О, кстати, я установил $path для файла.PDF в каталоге на моем компьютере... потому что я прочитал, что должен быть указан путь к файлу, а не просто каталог.

1 ответ

Похоже, ваш скрипт работает в большинстве случаев.

Я нашел эту страницу, сообщающую, что поле заголовка HTTP агента пользователя может быть важным для сервера, поэтому попробуйте следующее:

$userAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2;)"
$url = "https://www.adobe.com/enterprise/pdfs/pdfarchiving.pdf"
$path = "c:\test.pdf"

$client = New-Object System.NET.Webclient
$client.Headers.Add("user-agent", $userAgent)
$client.DownloadFile( $url, $path )
Другие вопросы по тегам