有没有一种方法可以使用tf.exe在Azure存储库中的多个存储库上设置git权限?

时间:2019-01-08 14:56:17

标签: git tfs azure-devops azure-pipelines

我最近从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:*-这不起作用

我真的不想手动检查它们,但必须这样做。

1 个答案:

答案 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