我有一个完整的代码文件可以在PC上完美运行。我把它带到另一个,它被破坏了。我使用了这个片段,输出只是空白,它没有从对象中获取任何内容。浏览器会加载页面。
# Create the IE com object
"Lauching IE process..."
$ie = new-object -com InternetExplorer.Application
$ie.visible = $true
# Navigate to the login page
"Opening $loginPage"
$ie.navigate($loginPage)
"Waiting for page to load..."
# Wait for the page to finish loading
do {sleep 2} until (-not ($ie.Busy))
sleep 2
$ie.document.body.innerHTML
我发现了一些IE安全模型的引用,以管理员等身份运行,并且稍微摆弄了它。
仍然没有运气。
有什么建议吗?
谢谢!
答案 0 :(得分:3)
好的,我最终解决了这个问题。基于这篇文章:
Powershell System.__ComObject.document property no longer works under IE 9
我也注意到了
$ie.document | Get-Member
在破碎的机器上显示COM对象guid,在好机器上显示mshtml。好的机器确实安装了Office。我复制了
C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\microsoft.mshtml.dll
破碎的机器。然后在我的脚本顶部我添加了
Add-Type -Path "C:\dll\Microsoft.mshtml.dll"
宾果游戏,脚本现在正常运作!
答案 1 :(得分:0)
我不确定你的$ loginPage变量中存储了什么,所以我用www.google.com替换了它,它打开了页面,但没有显示.document.body.html部分。
我发现这个论坛讨论了与你所描述的类似问题。他们建议将代码更改为
$ie = new-object -com internetexplorer.application
$ie.Visible = $true
$ie.navigate('https://www.google.com')
while($ie.busy){Start-Sleep -Milliseconds 100}
$ie.document.body | select innerhtml
我试过这个并且工作正常。