Windows 10 Powershell调用WebRequest“Windows安全警告”

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

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

会发生什么是你得到以下警告: http : //i.stack.imgur.com/TR023.jpg

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

控制面板> Internet选项>隐私http://img.zgserver.com/windows/OSLS3.jpg

您可以设置cookies以便始终接受。 这是摆脱这个消息的唯一方法,仍然保留DOMparsingfunction。 -UseBasicParsing不是我的解决scheme,因为我想使用Invoke-WebRequest返回的function,而没有进行基本的parsing。

但是现在在Windows 10中,微软决定无论出于什么原因都要去掉这个滑块:i.stack.imgur.com/jeNm3.jpg

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

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

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

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

两个小的补充: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