我有一个脚本使用PowerShells IE COM对象登录到一个站点并导航到一个带有PDF的页面(我想下载)。我使用IE COM对象进行所有导航,并使用Invoke-WebRequest进行实际下载。问题是PDF文件下载时它们的大小为2kb且无法打开。我有一种强烈的感觉,这是一个会话问题,IE必须忘记我以某种方式登录。有什么办法让IE记住我登录的时候才能成功下载文件?
任何帮助表示赞赏。感谢。
编辑:
$ie = New-Object -COMObject InternetExplorer.Application
$ie.visible = $true
# Navigate to home page
$ie.navigate($URL)
while ($ie.Busy -eq $true){Start-Sleep -Seconds 3}
$Username = $ie.Document.getElementsByName("userName")
$Username.item(0).value = "username"
$Password = $ie.Document.getElementsByName("password")
$Password.item(0).value = "pass"
$AcceptTerms = $ie.Document.getElementById("useAddtnlField")
$AcceptTerms.checked = $true
$Btn = $ie.Document.getElementsByTagName("span") | ? {$_.title -match 'Login'}
$Btn.click()
while ($ie.Busy -eq $true){Start-Sleep -Seconds 2}
# ---- logged in ----
# -- Opens link in new window (due to JS) --
$ie.Navigate("https://chaseloanmanager.chase.com/Chaselock/ViewOnlineGuide.aspx")
while ($ie.Busy -eq $true){Start-Sleep -Seconds 2}
在最后一次导航之后,我丢失了$ ie对象,并且不再对它做任何事情。如果我创建一个新的$ie2
对象,并使用$ie2
继续该脚本,则完成后无法打开这些文件。我还没有成功使用Shell.Application
和Windows()
方法访问该窗口,以尝试引用原始的$ie
窗口。无论如何,我想我需要使用原始的$ie
对象来完成脚本,这样我才能在整个过程中被识别为已登录并且最终可以进行有效下载。希望这是有道理的,可以帮助别人帮助我。感谢