【问题标题】:How to close IE sessions opened by Invoke-WebRequest如何关闭 Invoke-WebRequest 打开的 IE 会话
【发布时间】:2016-05-04 13:08:52
【问题描述】:

我在我的脚本中注意到Invoke-WebRequest 正在启动 Internet Explorer(大概是为了解析 DOM)。有没有办法在我的脚本结束时关闭这些 IE 会话以进行清理?

以红色突出显示的行是iwr,它会提示打开 Internet Explorer。如果我在 $AllRegs 请求中添加-UseBasicParsing,脚本会在几行之后失败,试图捕获$LibraryID

【问题讨论】:

  • 我想只使用-UseBasicParsing,这样 IE 就永远不会启动。但是,无论出于何种原因这样做都会导致我的后续请求失败。
  • 您是通过 PowerShell ISE 还是通过控制台主机调用脚本?我认为一旦宿主应用程序关闭,IE 实例也会关闭,我建议不要尝试强制它们(以免干扰任何其他不相关的 IE 实例)。
  • 使用 PowerShell ISE(以管理员身份)调用。即使关闭 ISE 后,IE 窗口仍保持打开状态
  • 它们是真正的交互式 IE 窗口还是只是进程?什么版本的 PowerShell? iwr 调用成功了吗?
  • 在解析 DOM 时,没有执行 JS,所以我不确定这是怎么发生的。

标签: powershell internet-explorer dom webrequest


【解决方案1】:

要强制关闭所有 IE 会话,请使用:

get-process iexplore | stop-process

要更优雅地关闭 IE 会话,请使用:

Get-Process iexplore | ForEach-Object { $_.CloseMainWindow() }

您也可以在 ForEach 调用之后添加一个等待,但我使用同一行来关闭 Chrome 并且从来没有必要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多