2013-03-21 213 views
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。如果這一網址被打開通過Flags參數控制:

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

但我不能夠調用navigate方法這個新創建的對象$ie上。

回答

10

您可以使用Start-Process來打開URL。如果瀏覽器窗口已經打開,它將作爲一個選項卡打開。

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

這假定Internet Explorer是默認的Web瀏覽器。 – 2013-06-27 08:14:17

+0

我很確定'Start-Process'只是將URL發送到系統上的默認瀏覽器。它適用於Firefox,作爲我的默認瀏覽器。 – aphoria 2013-06-27 11:43:14

+0

是的,它在默認瀏覽器,Chrome瀏覽器,FF,IE或其他瀏覽器中打開。然而,問題集中在IE,所以我只想指出,IE必須設置爲默認瀏覽器。 – 2013-06-27 16:40:04

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 2013-03-25 06:17:54

+0

IE對象不是新創建的。你究竟「不能調用'Navigate'方法?你有錯誤嗎?第一個命令是否返回一個對象? '$ ie.GetType()'和'$ ie |的輸出是什麼? GET-Member'? – 2013-03-25 08:31:45

+0

第一個命令成功了,它返回了同樣類型的對象,我已經用get-member檢查過了,對象創建時一切都很好,但仍然無法調用導航功能,它顯示一個錯誤,它是給出如下: 方法調用失敗,因爲[System.Objec在行:1 char:14 + $ ie3.navigate <<<<(「www.google。com「)+ CategoryInfo:InvalidOperation + FullyQualifiedErrorId:MethodNotFound – Rohit2194017 2013-03-25 09:38:16

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