Открыть вкладку в существующем экземпляре IE

$ie = New-Object -com internetexplorer.application

Каждый раз, когда я открываю новый сайт с этим объектом (т.е. каждый раз, когда выполняется script), он открывается в новом окне IE, и я не хочу, чтобы он это делал. Я хочу, чтобы он был открыт на новой вкладке, но это тоже в ранее открытом окне IE. Я хочу повторно использовать этот объект, когда script запускается в следующий раз. Я не хочу создавать новый объект

Итак, есть ли способ проверить экземпляры 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.

Ответы

Ответ 1

Вы можете использовать Start-Process, чтобы открыть URL. Если окно браузера уже открыто, оно откроется как вкладка.

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

Ответ 2

Сначала вы должны подключиться к уже запущенному экземпляру Internet Explorer:

$ie = (New-Object -COM "Shell.Application").Windows() `
        | ? { $_.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)

Ответ 3

Вы можете использовать это, если 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