我最近从Teamcity迁移到Azure DevOps,昨天我迁移了约60个存储库。
我使用tf.exe和此命令在我们的核心项目存储库上设置了一些权限
tf git permission /deny:CreateBranch
/group:[FabrikamProject]\Contributors
/collection:https://dev.azure.com/fabrikam-fiber/
/teamproject:FabrikamProject
/repository:FabrikamRepo
理想情况下,我需要对其他存储库应用相同的权限。
我想知道是否有一种方法可以使用tf.exe接受存储库参数的通配符,例如:
/repository:*
-这不起作用
我真的不想手动检查它们,但必须这样做。
答案 0 :(得分:1)
我不知道通配符是否有效,但是您迭代存储库并使用小型PowerShell脚本(使用Rest API)运行命令:
$reposJson = Invoke-RestMethod -Method Get -Uri https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=5.0-preview.1 -ContentType application/json
$repos = $reposJson | ConvertFrom-Json
$tfExe = "path/to/exe"
$repos.value.ForEach({
& $txExe git permission /deny:CreateBranch /group:[FabrikamProject]\Contributors /collection:{collection} /teamproject:{project} /repository:$_.name
})
您只需要进行身份验证,就可以使用-Credential {email}
(在Invoke-RestMethod
中),然后会出现一个窗口,提示您输入密码或以这种方式使用PAT:
$personalAccessToken = "your-personal-access-token-here"
$header = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($personalAccessToken)"))}
并在-Headers $header
中添加Invoke-RestMethod
。