Azure Devops-Audit-Rest-API-Fortsetzungstoken mithilfe von Powershell

Oct 16 2020

Ich arbeite an einem Skript, das einen Überwachungsprotokollbericht in einer CSV-Datei für ausgewählte Felder ausgeben soll. Aufgrund der Einschränkung der Rest-API-Ergebnisse kann ich nicht alle Daten auf einmal abrufen. Wenn ich das Fortsetzungstoken manuell übergebe, kann ich den nächsten Datensatz abrufen, aber ich möchte, dass das Skript alle Protokolle für einen bestimmten Zeitraum generiert

Ich habe dieses Skript ausprobiert, das nicht alle Daten zurückgibt -

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

Ich habe auch mit Invoke-Webrequest versucht, dass es nicht alle Daten liefert. Ich habe ein großes Stück Holz.

Wie kann ich alle Daten erhalten?

Antworten

megha Oct 18 2020 at 15:36

Hier ist die Lösung, die für mich funktioniert hat -

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