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
과 함께 시도했지만 인증 오류로 인해 계속 오류가 발생합니다. 나는 로그인 후 쿠키를 캡처하고 다음 요청과 함께 전달했지만 아무 것도 시도하지 못했습니다. 누군가 다른 수단을 사용하여 이것을 수행하는 실제 사례를 가지고 있다면, 나는 모두 귀입니다. 실제로 필자의 선호는 가능하다면 IE 자동화를 피하는 것이지만, 나는 어떤 해결책을 취할 것이다.
이론적으로 'Invoke-WebRequest -Uri $ pdfuri -Credential $ cred -OutFile $ outpath'처럼 간단하지만이 방법을 항상 사용하지만 웹 사이트에서 이러한 방식으로 로깅을 허용하지 않을 수도 있습니다. –
@ Deadly-Bagel 필자는 그것을 보았습니다 만, 어떻게'$ cred' 오브젝트를 만들 수 있습니까? 외부 웹 사이트에 로그인하고 있습니다. 이것은 AD 자격 증명을 사용하는 Active Directory 로그인 또는 원격 서버 로그인이 아닙니다. 나는 자격 증명을 얻을 수 있다면'Invoke-WebRequest'를 사용하여 그것을하고 싶습니다. – neizan
@neizan 예제 사이트와 함께 작동하는지 테스트하기 위해 먼저 실행할 수 있습니다. unset 변수 $ cred를 사용하면 자격 증명을 요구합니다. 표준 Windows 자격 증명 프롬프트이지만 AD 또는 Windows 로그인과 관련이없는 경우에도 동일한 방법이 자주 사용됩니다. –