【问题标题】:Invoke-WebRequest causes IE content blocked dialogInvoke-WebRequest 导致 IE 内容被阻止对话框
【发布时间】:2014-09-16 07:27:50
【问题描述】:

在启用了Internet Explorer Enhanced Security Configuration 的 Windows 服务器上,像这样调用 Invoke-WebRequest:

Invoke-WebRequest "http://localhost" -UseBasicParsing -UseDefaultCredentials

导致此错误对话框:

考虑到此脚本旨在远程运行,我想完全避免出现该对话框。

【问题讨论】:

    标签: internet-explorer powershell


    【解决方案1】:

    似乎 Invoke-WebRequest 需要 IE,除非您指定 -UseBasicParsing 参数。 见:https://msdn.microsoft.com/powershell/reference/5.1/microsoft.powershell.utility/Invoke-WebRequest

    -UseBasicParsing 表示 cmdlet 将响应对象用于 HTML 内容 无需文档对象模型 (DOM) 解析。

    未安装 Internet Explorer 时需要此参数 计算机,例如在 Windows 的服务器核心安装上 服务器操作系统。

    【讨论】:

    • 会不会正好相反?如果“当IE安装时需要这个参数...”.
    • 这对我不起作用。添加 -UseBasicParsing 仍然会导致 IE ESC 弹出新 URL;至少在 PowerShell 3.0 上。
    【解决方案2】:

    单击添加并将about:security_powershell.exe 添加到Trusted Sites

    【讨论】:

    • 一个好建议 - 我试过了。然后我得到与初始页面引用的其他文件相关的后续错误。看起来 Invoke-WebRequest 的行为类似于普通浏览器,而不仅仅是检索初始请求的内容
    • 这正是Invoke-WebRequest 所做的。您可以使用 System.Net.WebClient 作为替代方案,但那里不会有客户端处理(没有 ajax)。
    • 正是我最终使用的:-)
    • 在我的情况下,还需要将 about:/assets/default.js 添加到受信任的站点。
    • 但这会破坏自动化。 OP 表示他正在尝试远程执行。
    【解决方案3】:

    也许自从 Raf 的上述回答发布以来,系统已经发生了变化。我发现它对我不起作用。

    起作用的是:-

    1. 打开 Internet Explorer
    2. 转到工具->Internet 选项
    3. 选择安全选项卡
    4. 点击本地内网
    5. 点击网站
    6. 输入 *.security_powershell.exe
    7. 点击添加

    【讨论】:

    • 我没有在 OP 的屏幕截图中显示“添加...”按钮,但出现了相同的错误消息,这对我也有效(尽管我在 可信站点而不是本地 Intranet)。
    • OP 表明他正在寻找基于 PowerShell 的解决方案,并且它必须能够远程执行。为什么你会建议一个 GUI 解决方案?这会破坏自动化。
    • @Steven 我对这个问题的理解是他们试图在客户端而不是服务器上运行 powershell 脚本。如果您不想在客户端上使用 GUI 对安全策略进行这些更改,您可以使用 Windows Server 组策略将安全更改应用于域中的所有计算机
    【解决方案4】:

    只返回从调用返回的对象的单个属性,即:

    (invoke-webrequest -Uri https://www.google.com).RawContent
    
    (invoke-webrequest -Uri https://www.google.com).StatusDescription
    

    我真的不知道 invoke-webrequest 的默认调用在做什么,但它肯定做的不仅仅是获取原始 HTTP 响应。

    【讨论】:

      【解决方案5】:

      我知道我在很老的帖子上发帖。

      我也遇到了这个问题“Invoke-WebRequest 导致 IE 内容被阻止对话框” 和选项“单击添加并将 about:security_powershell.exe 添加到受信任的站点。”对我不起作用,因为我通过传递参数循环访问网站。所以每次都会有新的 URL,如下所示。永久取消阻止和禁止此对话框的任何想法。

       #$URL='https://www.mywebsite.com/page/Public.aspx?id='+$CODE+'&qtr=8&Qtr=December'
      

      【讨论】:

      • 这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 1970-01-01
      • 2011-07-06
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多