2017-09-16 117 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