rest - 如何从 PowerShell 中的请求中获取 StatusCode
问题描述
我需要使用 power shell 从请求中获取成功和/或错误状态代码。而且我总是得到一个空白状态。
我尝试过使用 Invoke-WebRequest 和 Invoke-RestMethod。我通话成功,但找不到获取状态码的方法。
以下是目前的写法:
$resource = "some url"
$Logfile = "C:/path/log.log"
function LogWrite
{
Param([string]$logstring)
Add-content $logfile -value $logstring
}
Try
{
$Response = Invoke-WebRequest -Method Post -Uri $resource
Write-Output("Success.")
LogWrite $Date
LogWrite SuccessOnCall
LogWrite $Response.StatusCode
}
Catch
{
$ErrorMessage = $_.Exception.Message
Write-Output($ErrorMessage)
$FailedItem = $_.Exception
Write-Output($FailedItem)
LogWrite $Date
LogWrite ErrorOnCall
LogWrite $ErrorMessage
Break
}
我也试过:
LogWrite "StatusCode:" $Response.Exception.Response.StatusCode.value__
我使用了这个问题(和其他链接):Invoke-Restmethod:如何获取返回码?
为了解决这个问题,我的日志确实写了“SuccessOnCall”,但 StatusCode 是空白的。
谢谢你。
解决方案
您是否尝试使用 select-object 进行管道传输?
Invoke-WebRequest -Uri apiEndpoint -UseBasicParsing | Select-Object StatusCode
输出
StatusCode
----------
200
或者只是为了获取状态码
Invoke-WebRequest -Uri apiEndpoint -UseBasicParsing | Select-Object -Expand StatusCode
输出
200
要处理不成功的情况,请在 PowerShell v#7 + 包含-SkipHttpErrorCheck
参数上
,或者您可能需要使用$Error
数组来获取最新的错误并相应地访问属性。
推荐阅读
- angular - Ionic 4 Reactive Forms - 离子选择在编辑时不显示初始值
- swift - 即使使用 self.view.window?.close() 窗口也不会关闭
- php - 通过 cURL PHP 将上传的文件发送到 API
- java - Struts 2 非 Action 类中的用户 ServletContext、HttpServletRequest 和 HttpServlet 响应
- google-maps - Vue Google Maps - 单击打开详细信息信息窗口时的信息窗口数组
- c++ - 无法将 std::function 移动到地图中
- powershell - Powershell cmdlet 不返回任何结果(有时,间歇性地)
- c# - 如何读取多个文件txt c#
- java - 通过在 Google 云上运行 Dataflow 作业,在 VM 实例上提供自定义标签和元数据
- c++ - 对于复合数据类型使用 glClearBufferData 是否可移植?