windows - 由于重定向,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()
...
解决方案
我已经使用来自 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 提供的函数来显式调用需要关闭的窗口:
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()
}
}
}
推荐阅读
- laravel - Laravel 刀片 - 访问集合中的最后一个元素
- python - client.wait_for_message 检查列表 Discord PY
- ruby-on-rails - Rails/ActiveRecord:在一侧是多态的情况下,建立多对多关联的正确方法是什么?
- python - 使用 .loc 分配多列 - Pandas
- javascript - 如何使用 Vue 和 Fetch Api 获取 json
- angular - 按字母顺序排列从 Cloud Firestore 获取的数据
- javascript - 转换字符串(url 样式)以在 Object 中导航
- c++ - 使用 fstream 时 Xcode 给出 Linker 命令失败,退出代码为 1
- javascript - undefined 不是反应原生的对象
- asp.net-core - Use Mailkit to validate input string is an email