好吧,这是我认为微软需要立即解决的一个大问题.重现这一步的步骤:
的powershell> Invoke-WebRequest“anywebsitewithcookies.com”(让我们以microsoft.com为例)
会发生什么是您收到以下警告:
http://i.stack.imgur.com/TR023.jpg
现在这太可怕了.为什么微软认为这是可以接受的超出我,但在Windows 8.1中有一个解决方法.如果你进入:
控制面板>互联网选项>隐私
http://i.stack.imgur.com/OSLS3.jpg
您可以设置cookie以便始终被接受.这是摆脱此消息并仍保留DOM解析功能的唯一方法. -UseBasicParsing对我来说不是一个解决方案,因为我想使用Invoke-WebRequest返回的功能而无需基本的解析.
但是现在在Windows 10中Microsoft出于某种原因决定摆脱这个滑块:
i.stack.imgur.com/jeNm3.jpg
可以在每台Windows 10计算机上重现此问题,并完全破坏在静默脚本环境中如何使用Invoke-WebRequest,因为脚本挂起并等待对话框得到应答.有没有办法让像所有人一样在8.1中设置Cookies?我尝试了Windows 10中的Internet选项中的每个设置,但没有任何关键.我相信他们已停止使用它,或许可能将其转移到别处,但我找不到它. Microsoft Edge也没有很多设置,因此它们都没有帮助.
这只是令人气愤.任何帮助都将受到高度赞赏,因为这将在许多环境中造成相当大的混乱.
解决方法
两个小的补充: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