2013-03-21 4 views
11
$ie = New-Object -com internetexplorer.application 

Каждый раз, когда я открываю новый веб-сайт с этим объектом (т.е. каждый раз при запуске скрипта), он открывается в новом окне IE, и я не хочу, чтобы он это делал. Я хочу, чтобы он был открыт на новой вкладке, но это тоже в ранее открытом окне 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.

ответ

10

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

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

Предполагается, что Internet Explorer является веб-браузером по умолчанию. –

+0

Я уверен, что 'Start-Process' просто отправляет URL-адрес любому браузеру по умолчанию в системе. Он работает для меня с Firefox как мой браузер по умолчанию. – aphoria

+0

Да, он открывается в браузере по умолчанию, Chrome, FF, IE или что-то еще. Однако вопрос был сфокусирован на IE, поэтому я просто хотел указать, что IE должен быть установлен в браузере по умолчанию. –

8

Сначала вы должны приложить к уже работающему экземпляру 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) 
+0

** но м не в состоянии назвать метод навигации по этому вновь созданный объект , то есть. on $ ie ** – Rohit2194017

+0

Объект IE не создан. Как именно вы «не можете вызвать метод« Навигация »? Вы получили сообщение об ошибке? Первая команда возвращает объект вообще? Что такое вывод '$ ie.GetType()' и '$ ie, т.е. Get-Member'? –

+0

первая команда была успешной, и она вернула объект того же типа, я уже проверил его с помощью get-member, все выглядит нормально с созданием объекта, но все же m не может вызвать функцию навигации, это показывает ошибку, которая ниже: Ошибка вызова метода, потому что [System.Objec В строке: 1 char: 14 + $ ie3.navigate <<<< ("www.google.com ") + CategoryInfo: InvalidOperation + FullyQualifiedErrorId: MethodNotFound – Rohit2194017

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

Смежные вопросы