Я хочу использовать PowerShell для автоматизации входа на сайт и загрузки PDF-файла. В Интернете есть множество примеров, которые показывают, как это сделать (используя Invoke-WebRequest
, WebClient
, HttpWebRequest
или InternetExplorer.Application
), но для большинства из них не требуется сначала вход в систему. Некоторые показывают его с помощью логина, но я не могу заставить их работать. Я рядом с помощью InternetExplorer.Application
:Используйте PowerShell для автоматизации входа в систему и загрузки файлов
$username = "xxxxx"
$password = "yyyyy"
$url = "https://example.com/login.aspx"
$usernameElementId = "aaaaa"
$passwordElementId = "bbbbb"
$submitButtonElementId = "ccccc"
$ie = New-Object -com InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate($url)
while($ie.ReadyState -ne 4 -or $ie.Busy) {Start-Sleep -m 100}
$ie.Document.getElementById($usernameControlId).value = $username
$ie.Document.getElementById($passwordControlId).value = $password
$ie.Document.getElementById($submitButtonElementId).click()
while($ie.ReadyState -ne 4 -or $ie.Busy) {Start-Sleep -m 100}
Start-Sleep -m 2000
$url = "https://example.com/statements/201607.pdf"
$outFilePath = "C:\Downloads\Statement_201607.pdf"
$ie.Navigate($url)
while($ie.ReadyState -ne 4 -or $ie.Busy) {Start-Sleep -m 100}
# Script works up to this point--the pdf document is shown in IE.
#The file downloaded in the next step is empty.
$ie.Document.body | Out-File -FilePath $outFilePath
Мой вопрос: как я могу получить PDF документ, загруженный на последнем шаге сценария?
Я попытался выполнить эту же задачу с WebClient
и Invoke-WebRequest
, но я продолжаю получать ошибки из-за части аутентификации. Я попытался захватить файлы cookie после входа в систему и передать их со следующим запросом, но ничего. Если у кого-то есть рабочий пример этого, используя другое средство, я все уши. На самом деле, я предпочел бы избежать автоматизации IE, если это возможно, но я возьму любое рабочее решение.
В теории так же просто, как 'Invoke-WebRequest -Uri $ pdfuri -Credential $ cred -OutFile $ outpath', я использую это все время, но, возможно, веб-сайт не позволяет вести журнал таким образом. –
@ Deadly-Bagel Я это видел, но как мне создать объект '$ cred'? Обратите внимание, что я вхожу на внешний веб-сайт. Это не учетная запись входа в систему Active Directory или удаленного сервера с использованием учетных данных AD. Мне бы хотелось сделать это с помощью 'Invoke-WebRequest', если я могу получить учетные данные. – neizan
@neizan, вы можете запустить его, как сначала проверить, что он будет работать с примером сайта. Если для параметра unset переменной $ cred будет запрашиваться учетная запись. Хотя это стандартное приглашение учетных данных Windows, тот же метод часто используется для вещей, не связанных с AD или даже с входами в Windows. –