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

Za każdym razem, gdy otwieram nową stronę internetową za pomocą tego obiektu (tj. Za każdym razem, gdy skrypt działa) jest on otwierany w nowym oknie IE i nie chcę tego robić. Chcę go otworzyć w nowej karcie, ale także w uprzednio otwartym oknie IE. Chcę ponownie użyć tego obiektu, gdy skrypt zostanie uruchomiony następnym razem. Nie chcę tworzyć nowego obiektuOtwarta karta w istniejącej instancji IE

Czy istnieje sposób sprawdzenia wystąpień przeglądarki Internet Explorer i ponownego użycia jej instancji ???

próbowałem to jako rozwiązanie:

Najpierw trzeba dołączyć do już działającej instancji programu Internet Explorer:

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

Wtedy Przejdź do nowego adresu URL. W przypadku, gdy adres URL jest otwierany jest kontrolowana poprzez parametr Flags:

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

ale nie jestem w stanie nazwać navigate metodę na tym nowo utworzonego obiektu $ie.

Odpowiedz

10

można użyć Start-Process otworzyć URL. Jeśli okno przeglądarki jest już otwarte, otworzy się ono jako karta.

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

Zakłada się, że Internet Explorer jest domyślną przeglądarką. –

+0

Jestem prawie pewien, że 'Start-Process' po prostu wysyła adres URL do jakiejkolwiek domyślnej przeglądarki w systemie. Działa na mnie z przeglądarką Firefox jako moją domyślną przeglądarką. – aphoria

+0

Tak, otwiera się w domyślnej przeglądarce, Chrome, FF, IE lub cokolwiek innego. Jednak pytanie dotyczyło IE, więc chciałem tylko zwrócić uwagę, że IE musi być ustawione na domyślną przeglądarkę. –

8

Najpierw trzeba dołączyć do już działającej instancji programu Internet Explorer:

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

Wtedy Navigate do nowego adresu URL. W przypadku, gdy adres ten jest otwierany jest sterowana przez parametr Flags:

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

Edycja: w przypadku 2 lub więcej przypadków IE są uruchomione (dodatkowe karty, liczy się jako dodatkowe przykłady również) wyliczenie zwróci tablicę, tak trzeba wybrać konkretną instancję z tablicy:

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

** ale nie jestem w stanie wywołać metodę poruszania się na tym nowo utworzonego obiektu ,to znaczy. na $ ie ** – Rohit2194017

+0

Obiekt IE nie jest nowo utworzony. Jak dokładnie "nie możesz wywołać metody" Nawiguj "? Czy otrzymujesz błąd? Czy pierwsze polecenie zwraca obiekt w ogóle? Co to jest wynik działania '$ ie.GetType()' oraz '$ ie | Get-Member'? –

+0

pierwsze polecenie zakończyło się sukcesem i zwróciło obiekt tego samego rodzaju, już sprawdziłem go za pomocą get-member, wszystko wygląda dobrze z tworzeniem obiektu, ale wciąż nie jestem w stanie wywołać funkcji navigate, pokazuje błąd, który jest podana poniżej: Wywołanie metody nie powiodło się, ponieważ [System.Objec At line: 1 char: 14 + $ ie3.navigate <<<< ("www.google.com ") + CategoryInfo: InvalidOperation + FullyQualifiedErrorId: MethodNotFound – Rohit2194017

2

Można to wykorzystać, jeśli program Internet Explorer nie jest domyślną przeglądarką:

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 
    } 
} 

Znalazłem to na PowerShell.com

Powiązane problemy