我正在使用 Powershell Invoke-WebRequest
(这也适用于Invoke-RestMethod
)来调用 ElasticSearch 集群。此特定命令通常会返回错误结果 ( 409 conflict
)。
Powershell 看到错误状态,抛出错误并且没有通过管道传递任何有用的东西,并将响应的主体喷射到控制台上:
但是,a) 即使它有一个错误代码,我也不在乎它是否出错(只是它被返回),并且 b) 我希望能够访问该响应的正文,以便我可以实际检查内包含的数据。
有什么方法可以让 PowerShell 抑制错误输出(-ErrorAction
不起作用)并沿管道传递有用的东西?
作为一个注释,我实际上想用它来调用它,Invoke-RestMethod
但是因为它Invoke-WebRequest
本质上是相同的命令,所以我已经将这个问题概括为Invoke-WebRequest
去年我写了一个脚本来诊断常见的 IIS 设置问题,它在GitHub 上,因为我需要分析来自服务器的响应,即使是非 200 的结果,尤其是非 200 的结果,所以
Invoke-WebRequest
没有工作。我删除了一些东西,基本代码如下。
我使用 .NET
System.Net.WebRequest
是因为即使System.Net.WebException
抛出了 a,您仍然可以使用响应标头和正文访问响应流。