Pracuję nad skryptem, który powinien wyjść z dzienników audytu raport w pliku CSV dla wybranych pól. Ze względu na ograniczenie wyników reszty API nie mogę uzyskać wszystkich danych jednocześnie. Jeśli przekazuję token kontynuacyjny ręcznie, mogę dostać kolejny zestaw danych, ale chcę skrypt do generowania wszystkich dzienników dla określonej ramy czasu

Próbowałem tego skryptu, 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, nie zapewnia również wszystkich danych. Mam duży uchwyt kłód.

Jak mogę uzyskać wszystkie dane?

0
megha 16 październik 2020, 19:01

1 odpowiedź

Najlepsza odpowiedź

Oto rozwiązanie, które dział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)
0
megha 8 listopad 2020, 02:24