1

我正在尝试使用 PowerShell 从多个系统将 JSON 正文发送到我的 Flask 网站。
虽然它适用于我的大多数系统,但在我的某些系统上失败,我无法弄清楚为什么..
PowerShell 命令:

$res = Invoke-RestMethod -Method 'Put' -Uri $url -Body (ConvertTo-Json $dut -Depth 3) -Header @{"Content-Type"="application/json"};

错误显示:

Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a receive.
At line:1 char:8
+ $res = Invoke-RestMethod -Method 'Put' -Uri $url -Body (ConvertTo-Jso ...
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

在正常工作的系统上,我可以毫无问题地在 $url 上浏览网站
但是在失败的系统上,浏览器无法访问 $url 上的网站,并出现错误“连接已重置”,我认为这是解释了为什么 PowerShell 脚本也会在它们上失败。

我尝试比较[enum]::GetNames([Net.SecurityProtocolType])通过和失败系统的输出,一切看起来都一样:

SystemDefault
Ssl3
Tls
Tls11
Tls12
Tls13

我还查找了许多其他类似的帖子,他们中的大多数人说这个命令可以解决他们的问题:[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol - bOR [System.Net.SecurityProtocolType]::Tls11 -bOR [System.Net.SecurityProtocolType]::Tls12,但它对我不起作用,我也认为输出[enum]::GetNames([Net.SecurityProtocolType])已经证明我的通过/失败系统都在使用这些协议...?

我不是这些协议的专家,到目前为止找不到有关如何解决此问题的任何信息。
有人可以给我一些指示吗?
谢谢!

4

0 回答 0