[英]Azure DevOps Rest Api to get all projects with continuation token
[英]Azure Devops audit rest api continuation token using powershell
我正在编写脚本,该脚本应该在 csv 文件中为所选字段输出审计日志报告。 由于 rest api 结果限制,我无法一次获取所有数据。 如果我手动传递继续令牌,我可以获得下一组数据,但我希望脚本生成给定时间范围内的所有日志
我试过这个不返回所有数据的脚本 -
$personalAccessToken = ""
$auth = [Convert]::ToBase64String([Text.Encoding]::
ASCII.GetBytes(":$($personalAccessToken)"))
$headers = @{}
$headers.Add("Authorization", "Basic $auth")
do
{
$uri = "https://auditservice.dev.azure.com/{org}/_apis/audit/auditlog?
startTime=2020-07-01T00.00.00&endTime=2020-10-
15T16.00.00&continuationToken=$continuationToken&api-version=6.0-
preview.1"
$TestRuns = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
| Select-Object -ExpandProperty decoratedAuditLogEntries |
Where-Object { $_.actionId -eq 'Git.RepositoryCreated' } |
Select-Object actorDisplayName, ProjectName, actionId, details,
timestamp
$continuationToken = $TestRuns.Headers.'x-ms-continuationtoken'
$TestRuns
}
while ($continuationToken -ne $null)
我也尝试过使用 Invoke-webrequest 它也不提供所有数据。 我有一大堆原木。
我怎样才能得到所有的数据?
这是对我有用的解决方案 -
$personalAccessToken = ""
$auth =
[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes
(":$($personalAccessToken)"))
$headers = @{}
$headers.Add("Authorization", "Basic $auth")
do
{
$uri =
"https://auditservice.dev.azure.com/{organization}/_apis/audit/auditlog?
startTime=2020-09-20T20:42:20:3094806Z&endTime=2020-10-
15T20:42:20:3094806Z&continuationToken=$continuationToken&api-version=6.0-
preview.1"
$TestRuns = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
$result = @( $TestRuns | Select-Object -ExpandProperty
decoratedAuditLogEntries |
Where-Object { $_.actionId -eq 'Git.RepositoryCreated' } |
Select-Object actorDisplayName, ProjectName, actionId, details,
timestamp )
$continuationToken = $TestRuns.continuationToken
$result | Export-Csv "/data.csv" -Append
}
while ($null -ne $continuationToken)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.