Token de continuação da API de descanso de auditoria do Azure Devops usando o PowerShell

Oct 16 2020

Estou trabalhando em um script que deve gerar um relatório de registros de auditoria em um arquivo csv para os campos selecionados. Devido à limitação dos resultados da API de descanso, não consigo obter todos os dados de uma vez. Se eu passar o token de continuação manualmente, posso obter o próximo conjunto de dados, mas quero que o script gere todos os logs para determinado período

Tentei este script que não retorna todos os dados -

$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)

Eu também tentei com Invoke-webrequest, ele também não fornece todos os dados. Eu tenho uma grande quantidade de toras.

Como posso obter todos os dados?

Respostas

megha Oct 18 2020 at 15:36

Aqui está a solução que funcionou para mim -

$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)