我一直在编写一个使用网络浏览器界面运行一些服务器功能的脚本。我使用 Internet Explorer 8 在 Windows 7 上编写了脚本,它运行良好。一旦我将它移动到运行 Windows 2008 和 Internet Explorer 9 的生产服务器,它就会中断。终于追踪到它的故障点,但我有点难过如何修复它。这是会导致问题的代码:
$ie = new-object -com "InternetExplorer.Application"
$ie.navigate("http://www.google.com")
$ie.visible = $True
$doc = $ie.document
$Object1 = $doc.getElementByID("pocs")
这会弹出一个 IE 窗口,它应该能够按 ID 搜索元素。麻烦的是,现在我得到了错误
“找不到“getElementById”和参数计数的重载:“1”。”
关于这个错误,我几乎找不到。实际问题实际上是变量 $doc。如果我在 IE 9 上执行“$doc | get-member”,我会得到:
TypeName: System.__ComObject#{c59c6b12-f6c1-11cf-8835-00a0c911e8b2}
但在 IE 8 下我得到:
TypeName: mshtml.HTMLDocumentClass
因此,基本上,当我调用 $ie.document 时,IE 9 / Windows 2008 无法加载 Web 文档内容。我试过将 IE9 设置为兼容模式,但没有运气。
$ie.document | get-member 实际上确实显示了以下方法:“getElementById Method Variant getElementById ()”,所以它就在那里,但是没有文档可以解析。
任何想法将不胜感激。