2017-09-16 143 views
-1

我已經創建了打開在IE一個或多個URL的陣列的功能:第一URL應該在第一個選項卡被打開;連續的URL應該在後臺標籤中打開。如果IE已經打開,則應在新標籤中打開第一個URL以保留現有URL。打開在IE網址的陣列,IE是否打開或不使用的PowerShell

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) } 
    } 
} 
+0

你可以在if語句把它包裝成鏈接在這裏:https://stackoverflow.com/questions/16356098/powershell-how-to -check-IF-任何實例 - 的 - 互聯網資源管理器中,已經運行。 如果( 獲取進程IEXPLORE電子藝界silentlycontinue | 位置對象{$ _ MainWindowTitle -ne 「」} ) –

+0

我調整我的問題響應您的評論。如果IE尚未打開,爲什麼打開空的第一個選項卡? – user2319146

+0

您獲取/創建$ ie實例的部分缺失。您應該始終提供[最小,完整和可驗證示例](https://stackoverflow.com/help/mcve)。 – wp78de

回答

1

我猜如果IE之前沒有啓動過,第一個URL應該只在第一個標籤中打開?所有連續的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" 
+0

謝謝;正如您可能已經猜到的那樣,我正試圖通過引入函數來擴展腳本.................... 如果IE在第一次運行時已經打開,則兩個OpenSites網址在後臺標籤中打開。在第二次運行時,跳過對具有指定字符串的URL是否打開的測試,並且再次打開相同的OpenSites URL .................... 如果IE尚未在第一次運行時打開,則OpenSites URL按預期打開。在第二次運行中,測試成功,但下一個OpenSites URL在後臺選項卡中打開。 – user2319146

+0

(1)否:第一個或唯一的OpenSites URL應在新選項卡中打開。 (2)我有一個第二功能的開始,但在其他方面使用測試[這裏](https://stackoverflow.com/q/46129804/2319146)。 (3)按照(1)。 – user2319146

+0

好的,我認爲更新應該現在就完成。 我注意到腳本在從shell而不是PoSH ISE執行時的行爲有所不同。奇怪。 – wp78de