Windows 10 个 Powershell 调用 WebRequest "Windows Security Warning "

Windows 10 Powershell Invoke-WebRequest "Windows Security Warning "

好吧,我认为这是微软需要立即解决的一个大问题。重现此步骤的步骤:

powershell> Invoke-WebRequest "anywebsitewithcookies.com"(让我们以microsoft.com为例)

您会收到以下警告: http://i.stack.imgur.com/TR023.jpg

现在这简直可怕。为什么 Microsoft 认为这是可以接受的我无法理解,但是在 Windows 8.1 中有一个解决方法。如果你进入:

控制面板 > Internet 选项 > 隐私 http://i.stack.imgur.com/OSLS3.jpg

您可以将 cookie 设置为始终接受。这是摆脱此消息并仍然保留 DOM 解析功能的唯一方法。 -UseBasicParsing 对我来说不是解决方案,因为我想在没有基本解析的情况下使用 Invoke-WebRequest returns 的功能。

但是现在在 Windows10 中,无论出于何种原因,Microsoft 决定摆脱此滑块: i.stack.imgur.com/jeNm3.jpg

这个问题可以在每 Windows 10 台机器上重现,并且完全破坏了 Invoke-WebRequest 在静默脚本环境中的使用方式,因为 脚本挂起并等待对话框得到回答。有没有办法仍然像 8.1 中那样将 Cookie 设置为被所有人接受?我尝试了 Windows 10 中 Internet 选项中的所有设置,但没有任何设置是关键。我相信他们停止使用它并且可能将该设置移到了其他地方,但我找不到它。 Microsoft Edge 也没有很多设置,因此 none 有用。

这真令人气愤。任何帮助将不胜感激,因为这会在许多环境中造成相当混乱。

经过几个小时的搜索,我发现即使 Windows10 没有在 Internet 选项中显示滑块,它仍然使用与其对应的注册表项。所以你所要做的就是改变:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones 1A10 (Dword) 到 0,其中值与 Windows 8.1 中的滑块相同: 阻止所有 Cookie:00000003 高:00000001 中高:00000001 介质:00000001 低:00000001 接受所有 Cookie:00000000

两个小补充:Invoke-Webrequest 似乎不会在 PoSH 会话中重新读取注册表设置,因此在更改注册表设置后,关闭 PowerShell 命令会话并在 运行ning 之前重新打开它IWR.

第二个只是两个命令,它们将添加注册表值(第一个)并随后将其删除(第二个),因此您可以将它们放入脚本中。这样一来,您就不需要经常 运行 IE 处于 "accept all cookies" 模式。

reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones" /t REG_DWORD /v 1A10 /f /d 0

reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones" /v 1A10 /f