11
$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。打开 URL 的位置是通过 Flags 参数控制的:

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

但我无法navigate在这个新创建的对象上调用方法$ie

4

3 回答 3

10

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

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

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

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

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

$ie[0].Navigate("http://www.google.com/", 2048)
于 2013-03-21T11:56:57.620 回答
10

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

Start-Process 'http://www.microsoft.com'
于 2013-03-21T12:12:36.033 回答
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上找到了这个

于 2015-11-10T08:12:59.593 回答