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

如何让循环PowerShell脚本遇429状态码直接退出(无需do/try/catch)

实现方法

你可以直接捕获Invoke-WebRequest的响应对象,判断其状态码是否为429,满足条件时直接调用exit退出脚本。需要注意的是,默认情况下Invoke-WebRequest遇到非2xx状态码会抛出终止错误,所以要加上-ErrorAction SilentlyContinue参数,避免脚本因报错直接中断,这样才能正常获取状态码并判断。

修正后的完整代码如下:

# 正确定义请求头哈希表
$headers = @{
    'header' = 'header'
}

$req = @{
    Uri         = 'https://mywebsite.com/api/'
    Headers     = $headers
    Method      = 'Get'
    ContentType = 'application/json'
}

while($true){
    # 捕获响应对象,忽略非2xx状态码的报错
    $response = Invoke-WebRequest @req -ErrorAction SilentlyContinue
    
    # 检查状态码是否为429,是则退出脚本
    if ($response.StatusCode -eq 429) {
        exit
    }
    
    # 可添加等待逻辑避免频繁请求
    Start-Sleep -Seconds 1
}

关键说明

  • -ErrorAction SilentlyContinue:让Invoke-WebRequest遇到非成功状态码时不抛出错误,而是返回响应对象,确保能读取其StatusCode属性。
  • 直接判断$response.StatusCode -eq 429:满足条件时调用exit直接终止脚本,完全不需要do/try/catch结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:07:12