Skip to content

Instantly share code, notes, and snippets.

@vinijmoura
Created September 2, 2021 16:12
Show Gist options
  • Save vinijmoura/56412db71897173418ddaf2ba5791cd1 to your computer and use it in GitHub Desktop.
Save vinijmoura/56412db71897173418ddaf2ba5791cd1 to your computer and use it in GitHub Desktop.
Param
(
[string]$PAT,
[string]$Organization,
[string]$ConnStr
)
$SQLQuery = "DELETE FROM TeamCardRuleSettings"
Invoke-Sqlcmd -query $SQLQuery -ConnectionString $Connstr
$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($PAT)")) }
$UriOrganization = "https://dev.azure.com/$($Organization)/"
$uriProject = $UriOrganization + "_apis/projects?`$top=500"
$ProjectsResult = Invoke-RestMethod -Uri $uriProject -Method get -Headers $AzureDevOpsAuthenicationHeader
Foreach ($project in $ProjectsResult.value)
{
$uriTeams = $UriOrganization + "_apis/projects/$($project.id)/teams"
$TeamsResult = Invoke-RestMethod -Uri $uriTeams -Method get -Headers $AzureDevOpsAuthenicationHeader
Foreach ($team in $TeamsResult.value)
{
$uriTeamBoards = $UriOrganization + "$($project.id)/$($team.id)/_apis/work/boards?api-version=6.1-preview.1"
$TeamBoardsResult = Invoke-RestMethod -Uri $uriTeamBoards -Method get -Headers $AzureDevOpsAuthenicationHeader
Foreach ($teamBoard in $TeamBoardsResult.value)
{
$uriCardRuleSettings = $UriOrganization + "$($project.id)/$($team.id)/_apis/work/boards/$($teamBoard.name)/cardrulesettings?api-version=6.1-preview.2"
$TeamCardRuleSettings = Invoke-RestMethod -Uri $uriCardRuleSettings -Method get -Headers $AzureDevOpsAuthenicationHeader
[array]$propertyRules = ($TeamCardRuleSettings.rules | Get-Member -MemberType NoteProperty).Name
if ($propertyRules)
{
Foreach ($cardRuleSetting in $TeamCardRuleSettings.rules)
{
Foreach ($fill in $cardRuleSetting.fill)
{
$ruleFilter = $fill.filter.Replace("'","")
$SQLQuery = "INSERT INTO TeamCardRuleSettings (
TeamProjectName,
TeamName,
TeamBackLogLevel,
TeamCardRuleSettingName,
TeamCardRuleSettingFilter,
TeamCardRuleSettingBackGroundColor
)
VALUES
(
'$($project.name)',
'$($team.name)',
'$($teamBoard.name)',
'$($fill.name)',
'$($ruleFilter)',
'$($fill.settings.'background-color')'
)"
Invoke-Sqlcmd -query $SQLQuery -ConnectionString $Connstr
}
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment