Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internet explorer 在现有IE实例中打开选项卡_Internet Explorer_Powershell - Fatal编程技术网

Internet explorer 在现有IE实例中打开选项卡

Internet explorer 在现有IE实例中打开选项卡,internet-explorer,powershell,Internet Explorer,Powershell,每次我用这个对象打开一个新网站(即每次脚本运行时),它都会在一个新的ie窗口中打开,我不希望它这样做。我希望它被打开在一个新的标签,但也在以前打开的IE窗口。我想在下次脚本运行时重用此对象。我不想创建新对象 那么,有什么方法可以检查InternetExplorer的实例并重用它的实例吗 我尝试了这个解决方案: 首先,您必须连接到已运行的Internet Explorer实例: $ie = New-Object -com internetexplorer.application $ie.Navi

每次我用这个对象打开一个新网站(即每次脚本运行时),它都会在一个新的ie窗口中打开,我不希望它这样做。我希望它被打开在一个新的标签,但也在以前打开的IE窗口。我想在下次脚本运行时重用此对象。我不想创建新对象

那么,有什么方法可以检查InternetExplorer的实例并重用它的实例吗

我尝试了这个解决方案:


首先,您必须连接到已运行的Internet Explorer实例:

$ie = New-Object -com internetexplorer.application
$ie.Navigate("http://www.google.com/", 2048)
然后导航到新的URL。打开URL的位置通过Flags参数控制:

$ie = (New-Object -COM "Shell.Application").Windows() `
    | ? { $_.Name -eq "Windows Internet Explorer" }
$ie = (New-Object -ComObject "Shell.Application").Windows() |
      Where-Object { $_.Name -eq "Windows Internet Explorer" }

但是,我无法在此新创建的对象上调用
导航
方法
$ie

首先,您必须连接到已运行的Internet Explorer实例:

$ie = New-Object -com internetexplorer.application
$ie.Navigate("http://www.google.com/", 2048)
然后,您可以访问新的URL。打开URL的位置通过以下参数控制:

$ie = (New-Object -COM "Shell.Application").Windows() `
    | ? { $_.Name -eq "Windows Internet Explorer" }
$ie = (New-Object -ComObject "Shell.Application").Windows() |
      Where-Object { $_.Name -eq "Windows Internet Explorer" }
编辑:如果有2个或多个IE实例正在运行(其他选项卡也算作其他实例),枚举将返回一个数组,因此您必须从数组中选择一个特定实例:

$ie.Navigate("http://www.google.com/", 2048)

您可以使用
Start Process
打开URL。如果浏览器窗口已打开,它将作为选项卡打开

$ie[0].Navigate("http://www.google.com/", 2048)

如果Internet Explorer不是默认浏览器,则可以使用此选项:

Start-Process 'http://www.microsoft.com'

我在

上找到了它,但我无法在这个新创建的对象上调用navigate方法,即在$iet上,ie对象不是新创建的。您究竟是如何“无法调用
导航
方法”的?你有错误吗?第一个命令是否返回一个对象?
$ie.GetType()
$ie | Get Member
的输出是什么?第一个命令成功,它返回了相同类型的对象,我已经用Get Member检查了它,对象创建看起来一切正常,但仍然无法调用导航函数,它显示了下面给出的错误:方法调用失败,因为[System.Objec在第1行char:14+$ie3.navigate第一个命令成功,它返回了相同类型的对象,我已经用get member检查了它,对象创建看起来一切正常,但仍然无法调用navigate函数,它显示了一个错误,如下所示:方法调用失败,因为[System.Object[]]不包含名为“navigate”的方法。在第1行char:14+$ie3.navigate中,我检查了这两个对象的类型,它似乎属于不同的类型:新创建的对象类型为Object[],基本类型为System.Array。该对象是使用with callinig window()方法创建的(这是应该创建的)是类型为_ComObject,以System.MarshallByRefObject为基础。这假设Internet Explorer是默认的web浏览器。我很确定
启动进程
只会将URL发送到系统上的任何默认浏览器。它适用于我的默认浏览器Firefox。是的,它在默认浏览器Chrome,FF中打开,IE或其他。然而,问题的焦点是IE,所以我只想指出,IE必须设置为默认浏览器。你是对的。我将你的第一条评论解释为,只有IE是默认浏览器时,它才起作用。我希望能解释下选者不喜欢这个答案的原因。我知道这不会发生,但生病的