Azure REST API列表密钥vault机密的maxresults限制为25
我正在尝试获取每个密钥库中所有机密的列表,并在这个URL上使用Microsofts文档。 它表示,如果不设置maxresults,它将默认为25。但是,当我尝试将powershell脚本设置为高于25时,它会在我的powershell脚本中抛出此错误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个随机机密的方法。这似乎使端点变得毫无用处,因为没有办法过滤列表
{“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被隐藏,因为我正在将输出格式化为一个表。如果我的答复有帮助,请将其作为答案接受,谢谢。