7

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

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

发生的情况是您收到以下警告:http: //i.stack.imgur.com/TR023.jpg

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

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

您可以将 cookie 设置为始终被接受。这是摆脱此消息并仍保留 DOM 解析功能的唯一方法。-UseBasicParsing 对我来说不是一个解决方案,因为我想使用 Invoke-WebRequest 返回的功能而无需基本解析。

然而,现在在 Windows 10 中,无论出于何种原因,微软决定去掉这个滑块:i.stack.imgur.com/jeNm3.jpg

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

这简直令人发指。任何帮助将不胜感激,因为这将在许多环境中造成相当混乱。

4

2 回答 2

5

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

第二个只是两个命令,它们将添加注册表值(第一个)并在之后删除它(第二个),以便您可以将它们放入脚本中。这样一来,您就不必经常在“接受所有 cookie”模式下运行 IE。

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

reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3" /v 1A10 /f
于 2015-11-12T18:12:32.530 回答
3

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

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

于 2015-07-31T11:07:42.640 回答