class Repository { [string] $Id = "" [string] $Name = "" [string] $DefaultBranch = "" [string] $IsDisabled = "" [string] $WebUrl = "" [string] $LastDefaultChange = "" [string] $HasTest = "" [string] $LastTestChange = "" [string] $HasAccept = "" [string] $LastAcceptChange = "" } [string] $url = "" [string] $repositoryId = "" [string] $branchName = "" [string] $date = Get-Date -Format "yyyy-MM-dd HHmm" $fileName = ".\$date repositories with test and accept.csv" [string] $token = "yixqmupncd3b72zij4y5lfsenepak5rtvlba3sj33tvxvc4s7a6q" #"{INSERT_PERSONAL_ACCESS_TOKEN}" $token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)")) $head = @{ Authorization =" Basic $token" } [string] $organization = "effectory" [string] $project = "Survey%20Software" Write-Host "========================================================================================================================================================================" Write-Host "Creating repository overview." Write-Host "========================================================================================================================================================================" $repos = az repos list --organization "https://dev.azure.com/$organization/" --project "survey software" | ConvertFrom-Json | Select-Object [Repository[]]$Result = @() foreach ($repo in $repos) { Write-Host $repo.name [Repository] $repository = [Repository]::new() $repository.Id = $repo.id $repository.Name = $repo.name $repository.DefaultBranch = $repo.defaultBranch $repository.IsDisabled = $repo.isDisabled $repository.WebUrl = $repo.webUrl if ($true -ne $repo.isDisabled) { $repositoryId = $repo.id $branchName = $repo.defaultBranch $branchName = $branchName.Replace("refs/heads/", "") try { $url="https://dev.azure.com/$organization/$project/_apis/git/repositories/$repositoryId/commits?searchCriteria.itemVersion.version=$branchName&searchCriteria.`$top=1&api-version=6.0" $response = Invoke-RestMethod -Uri $url -Method GET -Headers $head $repository.LastDefaultChange = $response.value[0].committer.date } catch { $repository.LastDefaultChange = "" } try { $branchName = "test" $url="https://dev.azure.com/$organization/$project/_apis/git/repositories/$repositoryId/commits?searchCriteria.itemVersion.version=$branchName&searchCriteria.`$top=1&api-version=6.0" $response = Invoke-RestMethod -Uri $url -Method GET -Headers $head $repository.HasTest = "True" $repository.LastTestChange = $response.value[0].committer.date } catch { $repository.HasTest = "False" $repository.LastTestChange = "" } try { $branchName = "accept" $url="https://dev.azure.com/$organization/$project/_apis/git/repositories/$repositoryId/commits?searchCriteria.itemVersion.version=$branchName&searchCriteria.`$top=1&api-version=6.0" $response = Invoke-RestMethod -Uri $url -Method GET -Headers $head $repository.HasAccept = "True" $repository.LastAcceptChange = $response.value[0].committer.date } catch { $repository.HasAccept = "False" $repository.LastAcceptChange = "" } } $Result += $repository } $Result | Export-Csv -Path $fileName -Append -NoTypeInformation Write-Host "========================================================================================================================================================================" Write-Host "Done."