class PullRequest { [string] $RepositoryId = "" [string] $RepositoryName = "" [string] $DefaultBranch = "" [string] $RepositoryWebUrl = "" [string] $PullRequestId = "" [string] $PullRequestDate = "" [string] $PullRequestName = "" [string] $PullRequestCreatedBy = "" [string] $PullRequestReviewers = "" [string] $PullRequestStatus = "" [string] $PullRequestWebUrl = "" [string] $CompletionBypassReason = "" } [string] $date = Get-Date -Format "yyyy-MM-dd HHmm" $fileName = ".\$date pull requests.csv" Write-Host "========================================================================================================================================================================" Write-Host "Creating pull request overview." Write-Host "========================================================================================================================================================================" $repos = az repos list --organization "https://dev.azure.com/effectory/" --project "survey software" | ConvertFrom-Json | Select-Object | Where-Object { $true -ne $_.isDisabled } foreach ($repo in $repos) { $prs = az repos pr list --project "survey software" --repository "$($repo.name)" --organization "https://dev.azure.com/effectory/" --status all | ConvertFrom-Json | Select-Object [PullRequest[]]$Result = @() foreach ($pr in $prs) { [PullRequest] $pullRequest = [PullRequest]::new() $pullRequest.RepositoryId = $repo.id $pullRequest.RepositoryName = $repo.name $pullRequest.DefaultBranch = $repo.defaultBranch $pullRequest.RepositoryWebUrl = $repo.webUrl $pullRequest.PullRequestId = $pr.pullRequestId $pullRequest.PullRequestDate = $pr.creationDate $pullRequest.PullRequestName = $pr.title $pullRequest.PullRequestCreatedBy = $pr.createdBy.displayName $pullRequest.PullRequestReviewers = $pr.reviewers | join-string -property displayName -Separator ',' $pullRequest.PullRequestStatus = $pr.status $pullRequest.PullRequestWebUrl = "$($repo.webUrl)/pullrequest/$($pr.pullRequestId)" $pullRequest.CompletionBypassReason = $pr.completionOptions.bypassReason $Result += $pullRequest } $Result | Export-Csv -Path $fileName -Append -NoTypeInformation } Write-Host "========================================================================================================================================================================" Write-Host "Done."