Windows 10的Powershell Invoke-WebRequest命令:"Windows安全警告"

8

我认为这是一个非常严重的问题,微软需要立即解决。以下是重现步骤:

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也没有太多设置,所以它们都没有帮助。

这真是令人恼火。任何帮助都将不胜感激,因为这将在许多环境中造成混乱。


1
也许这个链接可以帮助你:https://technet.microsoft.com/zh-cn/library/hh831611.aspx - Marichyasana
我调查了一下,但我只是一个普通用户,网络访问网关似乎是一种商业解决方案,对于家庭脚本来说有些过头了。 - John Smith
https://connect.microsoft.com/PowerShell - user57508
LTSB也受影响吗? - user57508
2个回答

5

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

第二个是只需两个命令即可添加注册表值(第一个)并在之后删除它(第二个),这样您就可以将它们放入脚本中。 这样,您无需始终以“接受所有 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

4

经过几个小时的搜索,我发现尽管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


我正在使用PowerShell运行一个脚本,弹出的窗口真的很烦人。这个解决方案让窗口消失了。非常感谢! - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接