Powershell Web Page Automation在Internet上运行,而不是在Intranet上运行

前端之家收集整理的这篇文章主要介绍了Powershell Web Page Automation在Internet上运行,而不是在Intranet上运行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用Powershell进行一些简单的自动化,从我们公司的本地Intranet页面提取链接URL,然后使用这些URL进行一些工作.最后,我将使用该脚本打开每个链接,然后单击页面上的按钮.我在Windows 7 x64中使用Internet Explorer 9.

这是一个简单的工作PowerShell脚本示例,它显示页面上的所有链接

$ie = new-object -com "InternetExplorer.Application"
$ie.Visible = $true
$ie.Navigate( "http://www.reddit.com" )
While ($ie.Busy) {
    Sleep 1
}

$links = $ie.Document.getElementsByTagName("a")
$links | foreach {
    write-host $_.href
}

此脚本正常工作,直到我用本地Intranet站点替换URL.它遵循正常的URL方案(http://internaldomain.com/etc),但它被识别为Intranet站点.一旦我试图在Intranet区域中刮取页面,$ie.Document值突然变为NULL并且脚本失败.

我猜它与该区域的一些模糊设置有关……我不确定.我在网上找到了一些建议,比如将它添加到您信任的网站,但这没有用.这是我第一次将Powershell用于Web自动化,因此任何帮助或见解都将受到赞赏.

解决方法

也许解决方案在这里: http://blogs.msdn.com/b/ieinternals/archive/2011/08/03/internet-explorer-automation-protected-mode-lcie-default-integrity-level-medium.aspx

它解释了不同级别的标签,即.您必须使用“中选项卡”在本地区域中导航.

基本上,保持ie设置和使用脚本的最佳方法是创建一个注册表项,如上面的链接所述.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\InternetExplorer.ApplicationMedium]

[HKEY_CLASSES_ROOT\InternetExplorer.ApplicationMedium\CLSID] 
@="{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}"

在您的脚本中,使用这个新的com对象:

$ie = new-object -Com InternetExplorer.ApplicationMedium
...

猜你在找的HTML相关文章