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

PowerShell执行小规模POST负载测试时无法获取HTTP响应码问题

问题根因

核心问题是 Invoke-RestMethod cmdlet 成功返回时,输出的是解析后的响应体内容(比如JSON自动转成的PowerShell对象、文本内容等),并不包含HTTP响应元数据,所以你尝试获取 .StatusCode 属性的操作会返回空值。只有请求触发异常进入 catch 块时,你从异常对象中提取的状态码才会正常生效,这就是你控制台打印为空的原因。

修复方案

方案1:兼容所有PowerShell版本(推荐)

改用 Invoke-WebRequest 替代 Invoke-RestMethod,该cmdlet成功返回的对象自带 StatusCode 属性,仅修改Try块内的代码即可:

Try{
    $response = Invoke-WebRequest -Uri $URL -Method Post -ContentType "multipart/form-data; boundary=`"$boundary`"" -Body $bodyLines
    $SC = $response.StatusCode
}
catch{
    $SC = $_.Exception.Response.StatusCode.value__
}

方案2:PowerShell 6.1及以上版本可用

直接使用 Invoke-RestMethod 自带的 -StatusCodeVariable 参数,直接将响应状态码存入指定变量,无需手动提取:

Try{
    # 此处-StatusCodeVariable后跟的变量名不需要加$,执行后会自动生成$SC变量存储状态码
    Invoke-RestMethod -Uri $URL -Method Post -ContentType "multipart/form-data; boundary=`"$boundary`"" -Body $bodyLines -StatusCodeVariable SC
}
catch{
    $SC = $_.Exception.Response.StatusCode.value__
}

附加说明

如果你的API返回非2xx状态码也属于正常业务逻辑,还可以添加 -SkipHttpErrorCheck 参数(PowerShell 7+支持),让请求不会因为非2xx状态码进入异常块,直接正常返回响应对象即可。


内容的提问来源于stack exchange,提问作者T-Heron

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:45:04