我正在尝试使用powershell来编写Internet Explorer中的某些任务。这涉及在登录网站后从网站下载文件。我有一个工作测试脚本,但实际网站的相同代码给了我这个错误:
'='运算符失败:调用的对象已与其客户端断开连接。 (来自HRESULT的异常:0x80010108(RPC_E_DISCONNECTED))。 在U:\ PowershellScriptProjectSFTP \ test.ps1:71 char:22 + $ controlRef =<<<< $ browserDoc.getElementByID($控件ID) + CategoryInfo:InvalidOperation:(:) [],RuntimeException + FullyQualifiedErrorId:OperatorFailed
$browserDoc
$ie = new-object -com "InternetExplorer.Application"
$ie.navigate("about:blank")
$ie.visible = $true
[System.Threading.Thread]::Sleep(2000)
$ie.navigate($URL)
#get controls
write-host "Getting Document"
$browserDoc=$ie.Document
write-host "Getting Email component"
$email = $browserDoc.getElementById("MainContent_userEmail")
write-host "Getting Password component"
$pass = $browserDoc.getElementById("MainContent_userPassword")
write-host "Getting Button component"
$login = $browserDoc.getElementById("MainContent_submitButton")
实际错误发生在代码的其他地方,我遗漏了,因为它在这里做了同样的事情,但在循环期间确保页面完成加载。此代码在不同站点上的同一台计算机上运行,但都是.net aspx 2.0站点。
基本上,一旦Internet浏览器导航到指定的url,powershell就失去了与对象通信的能力,而这个错误后面跟着几个InvokeMethodOnNull和PropertyNotFound错误(我明白,这些是引用$ ie的结果,这已成为一个空对象,我试图诊断的整个问题)。我正在运行Windows 7.微软声称要修复此问题,但仅适用于XP和Server 03和08。
真的,对于导致这种行为的原因的任何解释都是我正在寻找的。正如我所说的,同样的代码指出一些网站运作完美,而其他网站每次都失败。
答案 0 :(得分:3)
我自己遇到了这个问题,发现以“管理员”身份运行Powershell窗口解决了这个问题。