首页 > 解决方案 > 由于重定向,Internet Explorer 不会使用 $ie.Quit() 关闭我的选项卡

问题描述

如果我想关闭我用 powershell 打开的最新的 Internet Explorer 选项卡 - 它不起作用 - 因为我被重定向到另一个站点进行登录。任何人都知道如何解决这个问题?

        try
    {
    
        Write-Host "Starting Internet Explorer to get login token..."
        $ie = New-Object -ComObject InternetExplorer.Application 
        $ie.visible = $true
        $ie.Navigate("redirectLink")
    
        Start-Sleep -s 3
    
        $ie.Quit()

...

标签: windowspowershellinternet-explorer

解决方案


我已经使用来自 Google Ad 的重定向链接尝试了您在 Windows 10 v2004 上列出的代码。我也尝试过手动更改选项卡上的页面。在这两种情况下,当$ie.Quit()运行时,它会关闭已打开的选项卡。我使用以下链接运行代码:

Write-Host "Starting Internet Explorer to get login token..."
$ie = New-Object -ComObject InternetExplorer.Application 
$ie.visible = $true
$ie.Navigate("https://www.google.com/aclk?sa=L&ai=DChcSEwijmJW6muDqAhVRPa0GHYV_B-IYABBcGgJwdg&sig=AOD64_2UgwCRNkwusFaFWEyYsktiUml6DA&ctype=46&rct=j&q=&ved=0ahUKEwjrppC6muDqAhXIi54KHVnCAREQwzwIUw&adurl=")
    
Start-Sleep -s 3
    
$ie.Quit()

我无法重现该错误,因此我目前的理论是这不仅仅是重定向(其中,一个页面将您发送到同一选项卡中的不同页面)。我怀疑您要访问的任何链接都会打开一个新标签并关闭您现有的标签作为其过程的一部分(关闭窗口,打开窗口)。因此,我建议在此答案中使用 Andy Schneider 提供的函数来显式调用需要关闭的窗口:

如何使用powershell关闭现有IE窗口中的选项卡

Function Close-IETab {
param($url)

    $oWindows = (New-Object -ComObject Shell.Application).Windows

    foreach ($oWindow in $oWindows.Invoke()) {

        if ($oWindow.Fullname -match "IEXPLORE.EXE" -and $oWindow.LocationURL -match $url) {

            Write-verbose "Closing tab $($oWindow.LocationURL)"
            $oWindow.Quit()
        }
    }

}

推荐阅读