PowerShell WebRequest:发送时发生意外错误
Posted
技术标签:
【中文标题】PowerShell WebRequest:发送时发生意外错误【英文标题】:PowerShell WebRequest : An Unexpected error occured on a send 【发布时间】:2017-06-20 16:04:15 【问题描述】:我对这篇文章有类似的问题
An Unexpected error occured on a send
我的问题略有不同,我实际上是从 Windows Server 2012 R2 上的服务器返回响应,但我得到的是本地计算机
底层连接已关闭:发送时发生意外错误。
我了解服务器正在结束连接或超时太低是 Microsoft 规定的原因。这是两台不同机器上的相同脚本,一台工作,一台不工作。我的本地机器是错误抛出者。
显然这不是我的脚本而不是我的本地主机的直接问题,所以我希望有人能提供一些见解,说明为什么这适用于服务器主机而不是我的笔记本电脑在同一个域上?
如果我在本地使用 try/catch,我看到的只是这个错误。如果我删除 try catch,我会得到完整的响应
Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send.
At C:\blah some directory Examples\blah\myscript.ps1:82 char:17
+ $response = Invoke-WebRequest -Headers $headers -Method GET -ContentType "ap ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
id: 67kjadsfj5029838k3ka70387fe400
state: active
[I get a response]
所以我实际上从主机收到了带有请求数据的响应,所以我必须从本地的 try/catch 中取出调用来获取它。显然不理想,我宁愿保持脚本完整
最终,我希望有人能提供一些见解,说明为什么我的本地计算机上的 powershell 会抛出此错误并给我响应,我该如何抑制或修复它?如果我能得到原因和方法,那就太好了,但我现在会接受。
【问题讨论】:
你能添加你传递给 Invoke-WebRequest 的参数吗?这将有助于理解您的问题。由于您正在处理 localhost 它可能与 BackConnectionHostNames 注册表项相关。 我传入了 4 个字符串,因为我的脚本需要在执行时设置参数,所以我填写了输入提示。否则,请求是一个 GET 方法,我不会将任何数据传递给主机,除非在标头中。 【参考方案1】:如何抑制或修复它?
如果您担心抑制错误消息,可以使用 WGET
cmdlet 上的 -ea 'Silently Continue'
/ -wa 'Silently Continue'
参数
【讨论】:
我在 powershell、.NET 中使用 Invoke-WebRequest,而不是 wget @JeremyWinslow wget 是 Invoke-WebRequest 的别名,我只是懒,不想打出来。 很遗憾没用,谢谢建议【参考方案2】:所以,我的程序经常崩溃,比如我正在使用的 VS Code。即使在 VS Code 中执行 PowerShell 时,您也必须右键单击 > 以管理员身份运行。一旦我这样做了,错误就消失了。但是很好的答案 TheIncorrigble1,我保留了您的示例以供将来参考
【讨论】:
以上是关于PowerShell WebRequest:发送时发生意外错误的主要内容,如果未能解决你的问题,请参考以下文章
从 powershell 下载文件时,Invoke-WebRequest 进度变得无响应/暂停
在powershell中使用Invoke-WebRequest重定向URL时如何获取位置标头
powershell équivalentdeinvoke-webrequest pour powershell V2。