Estou usando o Powershell Invoke-WebRequest
(isso também se aplica a Invoke-RestMethod
) para fazer uma chamada para um cluster ElasticSearch. Este comando específico geralmente retorna um resultado de erro ( 409 conflict
).
O Powershell vê o estado do erro, lança um erro e não passa nada de útil pelo pipeline e vomita o corpo da resposta no console:
No entanto, a) mesmo que tenha um código de erro, não me importo realmente com o erro (apenas que seja retornado) e b) quero poder acessar o corpo dessa resposta para que eu possa realmente inspecionar o dados contidos nele.
Existe alguma maneira de o PowerShell suprimir a saída de erro ( -ErrorAction
não funciona) e passar algo útil ao longo do pipeline?
Como observação, na verdade, quero invocar isso com Invoke-RestMethod
mas como e Invoke-WebRequest
são essencialmente o mesmo comando, generalizei esta questão paraInvoke-WebRequest
No ano passado escrevi um script para diagnosticar problemas comuns de configuração do IIS, está no GitHub , para isso precisei analisar a resposta do servidor, mesmo para resultados não 200, especialmente para resultados não 200, então
Invoke-WebRequest
não funcionou.Eu removi algumas coisas e o código essencial está abaixo.
Eu uso o .NET
System.Net.WebRequest
porque mesmo se umSystem.Net.WebException
for lançado, você ainda pode acessar o fluxo de resposta com cabeçalhos de resposta e o corpo.