You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell 5.1中Invoke-Restmethod如何捕获200成功状态码

PowerShell 5.1 环境下Invoke-RestMethod捕获200成功状态码实现方案

PowerShell 5.1中Invoke-RestMethod默认仅返回解析后的请求内容(JSON/XML等格式自动转换为对应对象),2xx类成功状态码不会直接暴露在返回值中,try/catch默认仅会捕获4xx/5xx类错误状态,可通过以下两种方式获取200状态码:

方法1:读取返回对象的隐藏响应属性(不改变原有Invoke-RestMethod使用习惯)

Invoke-RestMethod在5.1版本中会将完整HTTP响应信息作为隐藏属性附加在解析后的返回对象上,直接通过PSObject成员访问即可拿到状态码,示例代码如下:

# 配置错误为终止异常,保证异常场景能进入catch块
$ErrorActionPreference = 'Stop'
try {
    # 发起请求,结果存入变量
    $result = Invoke-RestMethod -Uri "你的目标请求地址" -Method Get -ContentType "application/json"
    # 从隐藏属性中提取状态码,显式转为整数类型
    $statusCode = [int]$result.PSObject.Properties['Response'].Value.StatusCode
    
    if ($statusCode -eq 200) {
        # 200状态码下的自定义处理逻辑
        Write-Host "请求成功,状态码200,返回内容:$result"
    }
}
catch {
    # 错误场景状态码从异常对象中提取
    $statusCode = [int]$_.Exception.Response.StatusCode
    Write-Host "请求异常,状态码:$statusCode,错误信息:$($_.Exception.Message)"
}
finally {
    # 还原默认错误配置
    $ErrorActionPreference = 'Continue'
}

方法2:用Invoke-WebRequest获取响应后手动解析内容(兼容性最稳定)

如果觉得隐藏属性访问方式不稳定,可以换用同模块的Invoke-WebRequest先拿到完整响应对象,读取状态码后手动解析内容,解析效果和Invoke-RestMethod完全一致,示例代码如下:

$ErrorActionPreference = 'Stop'
try {
    # 发起请求拿到完整响应对象
    $response = Invoke-WebRequest -Uri "你的目标请求地址" -Method Get -ContentType "application/json"
    $statusCode = [int]$response.StatusCode

    if ($statusCode -eq 200) {
        # 手动解析JSON内容为PS对象,和Invoke-RestMethod默认行为一致
        $result = $response.Content | ConvertFrom-Json
        Write-Host "请求成功,状态码200,解析后内容:$result"
    }
}
catch {
    $statusCode = [int]$_.Exception.Response.StatusCode
    Write-Host "请求异常,状态码:$statusCode,错误信息:$($_.Exception.Message)"
}
finally {
    $ErrorActionPreference = 'Continue'
}

注意事项

  • PowerShell 5.1版本没有-ResponseVariable参数,该参数为PowerShell 7及以上版本新增,不要直接套用高版本语法
  • 状态码建议显式转为整数类型再判断,默认返回值是枚举类型,直接比对可能出现类型不匹配问题
  • 如果接口返回204无内容类的成功响应,方法1中$result可能为$null,此时请使用方法2实现

内容的提问来源于stack exchange,提问作者wehelpdox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 15:15:18