无法使用InternetExplorer.Application对象?

时间:2015-08-23 23:18:32

标签: internet-explorer powershell

我有一个完整的代码文件可以在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安全模型的引用,以管理员等身份运行,并且稍微摆弄了它。

  • 如果我以管理员身份运行脚本
  • ,则脚本不起作用
  • 我已尽可能禁用IE安全性
  • 从IE 11降级为IE 9

仍然没有运气。

有什么建议吗?

谢谢!

2 个答案:

答案 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

我试过这个并且工作正常。

参考:https://social.technet.microsoft.com/Forums/scriptcenter/en-US/2faea229-a114-4d58-9624-f1ee42404928/powershell-internetexplorerapplication-things-are-missing?forum=ITCG