使用PowerShell在IE中打开一个URL数组,无论IE是否打开

时间:2017-09-16 22:50:02

标签: powershell internet-explorer

我创建了一个在IE中打开一个或多个网址数组的函数:第一个网址应该在第一个标签中打开;应在后台标签中打开连续的URL。如果IE已经打开,则应在新标签中打开第一个网址,以保留现有网址。

function OpenSites($sites) {
    $isFirstSite = $true
    foreach ($site in $sites) {
        if ($isFirstSite) {
            if (Get-Process iexplore -ea silentlycontinue | Where-Object {$_.MainWindowTitle -ne ""}) {
                $ie.Navigate2($site, $navOpenInNewTab)
            } else { $ie.Navigate2($site) }
            $isFirstSite = $false
        } else { $ie.Navigate2($site, $navOpenInBackgroundTab) }
    }
}

1 个答案:

答案 0 :(得分:1)

我想如果以前没有启动过IE,那么第一个URL应该只在第一个标签中打开?所有后续网址都应该在后台标签中打开,对吧?

更新:我希望这段代码是你想要的:

$navOpenInNewTab = 0x800;
$navOpenInBackgroundTab = 0x1000;

$ie = $null
$newInstance = $false
if (Get-Process iexplore -ea silentlycontinue | Where-Object {$_.MainWindowTitle -ne ""}) {
    $ie = (New-Object -COM "Shell.Application").Windows() | ? { $_.Name -eq "Internet Explorer" } | Select-Object -First 1
    sleep -milliseconds 500
    $ie.visible = $true
    $newInstance = $false
} else {
    $ie = New-Object -COM "InternetExplorer.Application"
    sleep -milliseconds 500
    $ie.visible = $true
    $newInstance = $true
}
#[void] [System.Reflection.Assembly]::LoadWithPartialName("'Microsoft.VisualBasic")
#[Microsoft.VisualBasic.Interaction]::AppActivate("$($ie.LocationName) $($ie.Name)")
    sleep -milliseconds 50

Write-Host $newInstance
function OpenSites($sites) { 
    $isFirstSite = $true
    foreach ($site in $sites) 
    {
        if ($isFirstSite -eq $true)
        {
            if($newInstance) {
                $ie.Navigate2($site)
            } else {
                $ie.Navigate2($site, $navOpenInNewTab)
            }
        } else {
            $ie.Navigate2($site, $navOpenInBackgroundTab)
        }
        $isFirstSite = $false
    }
}

OpenSites -sites "www.bing.com","www.heise.com"
相关问题