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

如何用PowerShell调用SentinelOne API获取全部应用列表(分页处理)

解决SentinelOne API分页获取全量应用风险列表的PowerShell实现

针对SentinelOne API单次最多返回1000条数据的限制,我们可以通过**循环调用API并传递分页游标(nextCursor)**的方式获取所有记录,具体修改代码如下:

# 初始化存储全量数据的数组
$allApplications = @()

# 基础请求参数,替换为你的真实API地址和Token
$baseParams = @{
    Method  = "GET"
    Headers = @{
        "Content-Type"  = 'application/json'
        "Authorization" = 'APIToken YOUR_REAL_API_KEY'
    }
}

# 初始请求Uri(不带cursor)
$currentUri = "https://SentineloneURL/web/api/v2.1/application-management/risks?endpointTypes=%22server%22&osTypes=%22windows%22&limit=1000"

do {
    # 发送请求
    $res = Invoke-RestMethod @baseParams -Uri $currentUri

    # 将当前页数据追加到全量数组
    $allApplications += $res.data

    # 更新下一次请求的Uri(如果存在nextCursor)
    if ($res.pagination.nextCursor) {
        $currentUri = "https://SentineloneURL/web/api/v2.1/application-management/risks?endpointTypes=%22server%22&osTypes=%22windows%22&limit=1000&cursor=$($res.pagination.nextCursor)"
    } else {
        # 没有游标时终止循环
        $currentUri = $null
    }
} while ($currentUri)

# 现在可以遍历$allApplications处理所有数据,例如输出应用名称
$allApplications | ForEach-Object { $_.applicationName }

关键逻辑说明:

  1. 全量数据存储:用$allApplications数组累积每一页的返回数据,规避单次请求的数量限制
  2. 循环请求判断:通过do-while循环持续发起请求,直到返回结果中没有nextCursor(即所有数据已获取)
  3. 游标传递:每次请求后检查$res.pagination.nextCursor,如果存在则将其作为参数拼接进下一次请求的Uri中,确保获取下一页数据
  4. 参数复用:将请求方法、请求头这类固定参数抽离到$baseParams中,提升代码可维护性

注意事项:

  • 替换YOUR_REAL_API_KEY为你的SentinelOne API Token
  • 替换SentineloneURL为你的SentinelOne控制台真实域名
  • 如果API返回的分页结构字段名有差异,请根据实际返回的JSON结构调整代码中的对应字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:45:00