Azure REST API列表密钥vault机密的maxresults限制为25

Azure REST API列表密钥vault机密的maxresults限制为25,azure,powershell,rest,azure-keyvault,Azure,Powershell,Rest,Azure Keyvault,我正在尝试获取每个密钥库中所有机密的列表,并在这个URL上使用Microsofts文档。 它表示,如果不设置maxresults,它将默认为25。但是,当我尝试将powershell脚本设置为高于25时,它会在我的powershell脚本中抛出此错误 {“error”:{“code”:“badparmeter”,“message”:“invalid maxresults”} 从文档中可以看出,端点似乎不包含任何分页或获取超过25个随机机密的方法。这似乎使端点变得毫无用处,因为没有办法过滤列表

我正在尝试获取每个密钥库中所有机密的列表,并在这个URL上使用Microsofts文档。

它表示,如果不设置maxresults,它将默认为25。但是,当我尝试将powershell脚本设置为高于25时,它会在我的powershell脚本中抛出此错误

{“error”:{“code”:“badparmeter”,“message”:“invalid maxresults”}
从文档中可以看出,端点似乎不包含任何分页或获取超过25个随机机密的方法。这似乎使端点变得毫无用处,因为没有办法过滤列表

我用来获取列表的命令如下

$uri = ""https://$($Vault).vault.azure.net/secrets?api-version=7.1&maxresults=26""
Invoke-RestMethod -Method Get -Uri $uri -Headers $headers

正如Gaurav在评论中所说,您需要使用来获得下一页的结果

我的测试代码中有
do,直到

$LoginUrl = "https://login.microsoft.com"
$RresourceUrl = "https://vault.azure.net/.default"
$ClientID = ""
$ClientSecret = ""
$TenantName = ""

# Compose REST request.
$Body = @{ grant_type = "client_credentials"; scope = $RresourceUrl; client_id = $ClientID; client_secret = $ClientSecret }     
$OAuth = Invoke-RestMethod -Method Post -Uri $LoginUrl/$TenantName/oauth2/v2.0/token -Body $Body

# Check if authentication was successfull.
if ($OAuth.access_token) {
    # Format headers.
    $HeaderParams = @{
        'Content-Type'  = "application\json"
        'Authorization' = "Bearer $($OAuth.access_token)"
    }

    # Create an empty array to store the result.
    $QueryResults = @()
    
    $Uri = "https://<your-key-vault-name>.vault.azure.net/secrets?api-version=7.1"
    # Invoke REST method and fetch data until there are no pages left.
    do {
        
        $Results = Invoke-RestMethod -Headers $HeaderParams -Uri $Uri -UseBasicParsing -Method "GET" -ContentType "application/json"
        $Results.nextLink
        if ($Results.value) {
            $QueryResults += $Results.value
        }
        else {
            $QueryResults += $Results
        }
        $Uri = $Results.nextLink
    } until (!($Uri))

    # Return the result.
    $QueryResults
}
else {
    Write-Error "No Access Token"
}
$LoginUrl=”https://login.microsoft.com"
$RresourceUrl=”https://vault.azure.net/.default"
$ClientID=“”
$ClientSecret=“”
$TenantName=“”
#编写REST请求。
$Body=@{grant\u type=“client\u credentials”;scope=$RresourceUrl;client\u id=$ClientID;client\u secret=$ClientSecret}
$OAuth=Invoke RestMethod-Method Post-Uri$LoginUrl/$TenantName/oauth2/v2.0/token-Body$Body
#检查身份验证是否成功。
if($OAuth.access\u令牌){
#格式化标题。
$HeaderParams=@{
“内容类型”=“应用程序\json”
“授权”=“持有人$($OAuth.access\u令牌)”
}
#创建一个空数组来存储结果。
$QueryResults=@()
$Uri=”https://.vault.azure.net/secrets?api-版本=7.1“
#调用REST方法并获取数据,直到没有剩余页面为止。
做{
$Results=Invoke RestMethod-Headers$HeaderParams-Uri$Uri-UseBasicParsing-Method“GET”-ContentType“application/json”
$Results.nextLink
如果($Results.value){
$QueryResults+=$Results.value
}
否则{
$QueryResults+=$Results
}
$Uri=$Results.nextLink
}直到(!($Uri))
#返回结果。
$QueryResults
}
否则{
写入错误“无访问令牌”
}

您没有在响应正文中获得
nextLink
吗?它返回一个值字段,其中包含25个秘密中每个秘密的id和属性列表。我很愚蠢,nextLink被隐藏,因为我正在将输出格式化为一个表。如果我的答复有帮助,请将其作为答案接受,谢谢。