Azure Devops Inspekcja token kontynuacji interfejsu API REST przy użyciu programu PowerShell
Oct 16 2020
Pracuję nad skryptem, który powinien wyprowadzać raport dzienników audytu w pliku csv dla wybranych pól. Ze względu na ograniczenie wyników w api nie mogę pobrać wszystkich danych naraz. Jeśli przekażę token kontynuacji ręcznie, mogę uzyskać następny zestaw danych, ale chcę, aby skrypt generował wszystkie dzienniki dla danego przedziału czasu
Wypróbowałem ten skrypt, który nie zwraca wszystkich danych -
$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)
Próbowałem również z Invoke-webrequest, który również nie zapewnia wszystkich danych. Mam duży kawałek kłód.
Jak mogę uzyskać wszystkie dane?
Odpowiedzi
megha Oct 18 2020 at 15:36
Oto rozwiązanie, które zadziałało dla mnie -
$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)