Last active
August 2, 2023 16:36
-
-
Save guibranco/66ca65aa88dacaf4b3a8c0dd8802720a to your computer and use it in GitHub Desktop.
Clone all repositories from an organization in Azure DevOps
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$organization = "AZURE_DEVOPS_ORGANIZATION" | |
$personalAccessToken = "AZURE_DEVOPS_PAT" | |
$base64AuthInfo = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($personalAccessToken)")) | |
$headers = @{Authorization=("Basic {0}" -f $base64AuthInfo)} | |
Write-Host "Cloning all repositories from organization: " $organization | |
$projectsUrl = "https://dev.azure.com/" + [uri]::EscapeDataString($organization) + "/_apis/projects?api-version=7.0" | |
$result = Invoke-RestMethod -Uri $projectsUrl -Method Get -Headers $headers | |
$result.value.name | ForEach-Object { | |
$project = $_; | |
Write-Host "Cloning all repositories from project: " $project | |
$projectUrl = "https://dev.azure.com/" + [uri]::EscapeDataString($organization) + "/" + [uri]::EscapeDataString($project) + "/_apis/git/repositories?api-version=7cls.0" | |
$result = Invoke-RestMethod -Uri $projectUrl -Method Get -Headers $headers | |
$result.value.name | ForEach-Object { | |
$repository = $_; | |
Write-Host "Cloning repository: " $repository | |
git clone ("https://" + [uri]::EscapeDataString($organization) + "@dev.azure.com/" + [uri]::EscapeDataString($organization) + "/" + [uri]::EscapeDataString($project) + "/_git/" + [uri]::EscapeDataString($repository)) repositories/$project/$repository | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment