Created
September 19, 2021 15:13
-
-
Save Oceanswave/96fc5fd9fb985ead3f488284ae8c67f0 to your computer and use it in GitHub Desktop.
Clone All Azure DevOps Repos
This file contains 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
param( | |
[string]$Organization | |
) | |
if ($Organization -notmatch '^https?://dev.azure.com/\w+') { | |
$Organization = "https://dev.azure.com/$Organization" | |
} | |
# Make sure we are signed in to Azure | |
$AccountInfo = az account show 2>&1 | |
try { | |
$AccountInfo = $AccountInfo | ConvertFrom-Json -ErrorAction Stop | |
} | |
catch { | |
az login --allow-no-subscriptions | |
} | |
# Make sure we have Azure DevOps extension installed | |
$DevOpsExtension = az extension list --query '[?name == ''azure-devops''].name' -o tsv | |
if ($null -eq $DevOpsExtension) { | |
$null = az extension add --name 'azure-devops' | |
} | |
$Projects = az devops project list --organization $Organization --query 'value[].name' -o tsv | |
foreach ($Proj in $Projects) { | |
if (-not (Test-Path -Path ".\$Proj" -PathType Container)) { | |
New-Item -Path $Proj -ItemType Directory | | |
Select-Object -ExpandProperty FullName | | |
Push-Location | |
} | |
$Repos = az repos list --organization $Organization --project $Proj | ConvertFrom-Json | |
foreach ($Repo in $Repos) { | |
if(-not (Test-Path -Path $Repo.name -PathType Container)) { | |
Write-Warning -Message "Cloning repo $Proj\$($Repo.Name)" | |
git clone $Repo.webUrl | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment