在现有IE实例中打开选项卡

时间:2013-03-21 10:23:54

标签: internet-explorer powershell

$ie = New-Object -com internetexplorer.application

每次我用这个对象打开一个新网站(即每次脚本运行时)都会在新的IE窗口中打开,我不希望它这样做。我希望它在一个新的选项卡中打开,但在以前打开的IE窗口中也是如此。我想在下次运行脚本时重用此对象。我不想创建新对象

那么有什么方法可以检查Internet Explorer的实例并重用其实例???

我尝试了这个解决方案:

首先,您必须附加到已经运行的Internet Explorer实例:

$ie = (New-Object -COM "Shell.Application").Windows() `
    | ? { $_.Name -eq "Windows Internet Explorer" }

然后导航到新网址。打开该URL的位置是通过Flags参数控制的:

$ie.Navigate("http://www.google.com/", 2048)

但无法在此新创建的对象navigate上调用$ie方法。

3 个答案:

答案 0 :(得分:10)

您可以使用Start-Process打开网址。如果浏览器窗口已打开,它将作为选项卡打开。

Start-Process 'http://www.microsoft.com'

答案 1 :(得分:9)

首先,您必须附加到已经运行的Internet Explorer实例:

$ie = (New-Object -ComObject "Shell.Application").Windows() |
      Where-Object { $_.Name -eq "Windows Internet Explorer" }

然后您Navigate到新网址。打开该URL的位置是通过Flags参数控制的:

$ie.Navigate("http://www.google.com/", 2048)

编辑:如果有2个或更多IE实例正在运行(其他选项卡也计入其他实例),枚举将返回一个数组,因此您必须从数组中选择一个特定实例:

$ie[0].Navigate("http://www.google.com/", 2048)

答案 2 :(得分:2)

如果Internet Explorer不是您的默认浏览器,则可以使用此选项:

Function Open-IETabs {
    param (
        [string[]]$Url
    )
    begin {
        $Ie = New-Object -ComObject InternetExplorer.Application
    }
    process {
        foreach ($Link in $Url) {
            $Ie.Navigate2($Link, 0x1000)
        }
    }
    end {
        $Ie.Visible = $true
    } 
}

我在PowerShell.com

上找到了这个