gpt4 book ai didi

导航到网页后,PowerShell IE9 ComObject 具有所有空属性

转载 作者:行者123 更新时间:2023-12-02 22:14:45 26 4
gpt4 key购买 nike

我有一个 PowerShell 脚本,它导航到我们 Intranet 上的(大概)经典 ASP 页面,以停止在我们的服务器上运行的 Windows 服务,作为该服务部署过程的一部分(并在部署新文件后重新启动它)。它运行良好,直到我们最近升级到 IE9。这是脚本。

# Open service page in IE
$ie = new-object -comobject InternetExplorer.Application
$ie.visible = $true
$ie.navigate($serviceUrl)
while($ie.busy) { start-sleep 1 }

# Stop service
$ie.Document.getElementById("dropDownActionList").value = "Stop"
$ie.Document.getElementById("buttonTakeAction").click()
while($ie.busy) { start-sleep 1 }

现在,当我运行脚本时,它成功启动了 IE,但会引发以下错误:
You cannot call a method on a null-valued expression.
At C:\Projects\ABC\Scripts\Deploy.ps1:85 char:28
+ $ie.Document.getElementById <<<< ("dropDownActionList").value = "Stop"
+ CategoryInfo : InvalidOperation: (getElementById:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

当我在 PowerShell 中进行调查时,我发现如果我创建 IE ComObject,它首先具有有效的属性,但是一旦我导航到服务控制页面,所有属性都为空(几乎就像 ComObject 消失了一样? )。例如,在 HWND 之前属性具有有效值,但现在为空( $ie.hwnd -eq $null 返回 true)。当我导航到该页面时,PowerShell 中未显示任何错误。

我看了一些 similar questions ,但第一个与我的情况不符(在我的情况下, Document 属性为空),对于后一个,IE9 默认为 Intranet 站点的兼容模式。我保存了 ASP 页面并通过 w3c validator 运行它并且它抛出了一些错误(尽管与我要处理的元素无关)。不幸的是,我无法修复这些。其他网站好像没有这个问题。对问题可能是什么的任何怀疑以及关于变通方法的建议?

最佳答案

我刚刚解决了这个......有点。在我关闭 IE 中的保护模式之前,我看到了相同的行为。这似乎与从一个安全区域提交到下一个安全区域有关。所以.. 假设您的原始页面位于 Internet 区域中,并启用了保护模式,您提交到受信任区域或 Intranet 或其他任何内容中的页面,似乎 COM 上下文丢失了。大概是故意的。我将尝试修复区域,并保持保护模式。

希望这可以帮助。

编辑:如果您在提升模式下运行 powershell(以管理员身份运行),这也不是问题

关于导航到网页后,PowerShell IE9 ComObject 具有所有空属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com