11
$ie = New-Object -com internetexplorer.application

このオブジェクトを使用して新しいWebサイトを開くたびに(つまり、スクリプトが実行されるたびに)、新しいIEウィンドウで開かれますが、そのようにしたくありません。新しいタブで開きたいのですが、以前に開いたIEウィンドウでも開きます。次回スクリプトを実行するときに、このオブジェクトを再利用したいと思います。新しいオブジェクトを作成したくない

それで、Internet Explorerのインスタンスをチェックして、そのインスタンスを再利用するような方法はありますか?

私はこれを解決策として試しました:

まず、すでに実行中のInternetExplorerインスタンスに接続する必要があります。

$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

まず、すでに実行中のInternetExplorerインスタンスに接続する必要があります。

$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してURLを開くことができます。ブラウザウィンドウがすでに開いている場合は、タブとして開きます。

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 に答える