Permissions 通过CLI对Azure DevOps的组权限

Permissions 通过CLI对Azure DevOps的组权限,permissions,azure-devops,command-line-interface,Permissions,Azure Devops,Command Line Interface,我想从Azure DevOps中每个项目的项目管理员角色中删除删除(删除项目)权限。以下是我正在运行的CLI命令。万事如意。但是,当您返回并在web上检查时,权限未被更改。有什么想法吗 $org = "myOrg" $orgUrl = "https://dev.azure.com/$org" $projName = "myProject" $group = "Project Administrators" $projId = az devops project list --org "$or

我想从Azure DevOps中每个项目的项目管理员角色中删除删除(删除项目)权限。以下是我正在运行的CLI命令。万事如意。但是,当您返回并在web上检查时,权限未被更改。有什么想法吗

$org = "myOrg"
$orgUrl = "https://dev.azure.com/$org"

$projName = "myProject"
$group = "Project Administrators"

$projId = az devops project list --org "$orgURl" -o json --query "value[?@.name == '$projName'].id | [0]"
$projToken = '$PROJECT:vstfs///Classification/TeamProject/'+$projId
$projToken = $projToken -Replace '"', ""

$subject = az devops security group list --org "$orgUrl" --scope organization -o json --subject-types vssgp --query "graphGroups[?@.principalName == '[$projName]\$group'].descriptor | [0]"

$namespaceId = az devops security permission namespace list -o json --org "$orgUrl" --query "[?@.name == 'Project'].namespaceId | [0]"

$bit = az devops security permission namespace show -o json --namespace-id $namespaceId --org "$orgUrl" --query "[0].actions[?@.name == 'DELETE'].bit | [0]" 

az devops security permission update --id $namespaceId --subject $subject --token $projToken --deny-bit $bit --org "$orgUrl" --merge true
输出为:

知道我做错了什么吗

提前感谢,, 杰克

知道我做错了什么吗

项目管理员组拥有团队项目级别的最高权限。因此,该组的项目权限(项目设置=>权限)不可编辑:

根据设计,项目管理员将始终拥有删除团队项目的权限

除了
项目管理员
组之外,其他组的权限都是可编辑的,请参见:

1.如果您想向
项目管理员
组添加一名成员,则无法删除该成员对删除项目的权限

(无论我们使用哪种方式,网页、Azure Devops Rest Api、az Devops cli命令或其他什么,这些都不起作用,因为这是经过设计的)

2.如果您确实希望为某个成员授予项目管理员应该拥有的大部分权限,但不包括删除团队项目权限,则可以尝试创建一个新组(在“项目设置=>权限”页面中),并为该组授予除删除团队项目权限以外的所有权限,如下所示:

您还需要做额外的工作,以便在管道安全性(见下图)中为组提供必要的权限、Repos权限(项目设置=>Repos=>Repos)


然后将成员添加到此自定义组,而不是默认的
项目管理员组。

项目管理员几乎是项目范围内的最高权限,不支持编辑该组的权限…感谢您的详细回复。我想在这种情况下,更改项目管理员的默认权限配置文件将不起作用。因此,我在项目中创建了一个没有显式权限映射的新组。然后重复添加拒绝位的步骤(还分别尝试了允许位),但权限在DevOps中不会更新。想法?问题可能与您的
--token
参数有关!请检查这个。建议在最后一个命令中直接使用
单引号
,而不是使用
$projToken
等变量。使用
az devops安全权限更新--id$namespaceId--subject$subject--token'$PROJECT:vstfs:///Classification/TeamProject/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx'--拒绝第4位--合并正确
。它会像符咒一样工作。谢谢你,兰斯!我想我终于成功了。感谢你的帮助!!