$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
方法。
答案 0 :(得分:10)
您可以使用Start-Process
打开网址。如果浏览器窗口已打开,它将作为选项卡打开。
Start-Process 'http://www.microsoft.com'
答案 1 :(得分:9)
首先,您必须附加到已经运行的Internet Explorer实例:
$ie = (New-Object -ComObject "Shell.Application").Windows() |
Where-Object { $_.Name -eq "Windows Internet Explorer" }
然后您Navigate
到新网址。打开该URL的位置是通过Flags
参数控制的:
$ie.Navigate("http://www.google.com/", 2048)
编辑:如果有2个或更多IE实例正在运行(其他选项卡也计入其他实例),枚举将返回一个数组,因此您必须从数组中选择一个特定实例:
$ie[0].Navigate("http://www.google.com/", 2048)
答案 2 :(得分: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
}
}
上找到了这个