我想使用 Powershell 在 Web 控制台上自动配置接入点。
我在 Win8/IE10 上开发,测试代码时一切正常。不幸的是,我在开发/测试后收到了“生产系统”。现在代码应该可以在 Windows Server 2012 R2/IE11 上运行。
这是我连接和登录接入点的代码(简化):
$IE = New-Object -ComObject "InternetExplorer.Application"
$IE.Visible = $true #1#
$IE.Navigate("192.168.0.100")
Write-Host $IE.LocationName
$IE.Document.GetElementByID("login-username").Value = "admin"
$IE.Document.GetElementByID("login-password").Value = "admin"
$IE.Document.GetElementByID("login-btn").Click()
Write-Host $IE.LocationName
出于调试原因,我通常会显示窗口(注释 #1#)。首先,Write-Host 显示正确的位置(“登录”)。在第二个 Write-Host 处,显示了错误的位置(“about:blank”)。在 IE 窗口中,您会看到正确的位置/选项卡名称(“AP”)。似乎 IE 对象变得无法使用,其他属性(如 $IE.Document.*)则不起作用。我必须手动关闭窗口。
我有两种解决方法:
- 当我在登录前手动单击 IE 窗口(获取焦点)时,它可以工作。
- 当我不显示窗口时($IE.Visible = $false),一切正常。
到目前为止我的场景/测试:
- IE ESC 被禁用。
- 我从另一台生产机器(2008R2)复制了 C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll,所以 $IE.Document 函数可以工作(我的开发机器中的 dll 产生相同的错误)。
- 我尝试为每个区域启用/禁用保护模式(Internet 选项 > 安全),但对我不起作用(在reddit上找到)
其他人有尝试的想法吗?调试适用于解决方法,它也适用于(到目前为止)不可见的窗口 - 但我想了解这些麻烦......
谢谢,最好的问候, kvo