0

使用 PowerShell 我试图从 groupType projectContributor 中删除一个用户,以便我可以将他移动到项目团队。我可以完成向项目团队的添加,但是我已经尽我所能使用 PATCH 删除此用户权利,但没有成功。仅供参考,以避免评论,OrgUrl、projectId 和 userId 正在传递。

    $b= @"
[
    {
        "op": "remove",
        "path": "/projectEntitlements",
        "value": {
            "projectRef": {
                "id": "$projectID"
            },
            "group": {
                "groupType": "projectContributor"
            }
        }
    }
]
"@

$uri = "$orgURL/_apis/userentitlements/$userId`?api-version=5.1-preview.2"
Invoke-RestMethod -Uri $uri -ContentType "application/json-patch+json" -Body $b -Method PATCH -Headers @{ Authorization = ("Basic {0}" -f $base64AuthInfo)}

我得到的错误是:

projectId","typeName":"System.ArgumentException, mscorlib","typeKey":"ArgumentException","errorCode":0,"eventId":0}
At line:20 char:1
+ Invoke-RestMethod -Uri $uri -ContentType "application/json-patch+json ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

任何帮助/示例表示赞赏。我已经阅读了 Azure DevOps API 的所有 API 文档。

4

2 回答 2

1

我使用User Entitlement rest api 遇到了同样的错误。

它适用于我从组休息 api 中删除成员。

DELETE https://vsaex.dev.azure.com/{organization}/_apis/GroupEntitlements/{groupId}/members/{memberId}?api-version=5.1-preview.1

当用户作为项目贡献者添加到项目时。该用户将被添加到[ProjectName]\\Contributors该项目的组中。

然后,您可以使用Group List rest api来获取[ProjectName]\\Contributors. {memberId}上面的apiRemove Member From Group是用户的userId. 然后你可以调用上面的 api 从项目贡献者组中删除用户。

于 2020-05-06T04:58:15.620 回答
0

请试试这个:

$b= @"
[
    {
        "op": "remove",
        "path": "/projectEntitlements/$projectID",
        "value": {
            "projectRef": {
                "id": "$projectID"
            },
            "group": {
                "groupType": "projectContributor"
            }
        }
    }
]
"@

而且由于您要在这条路径下删除价值,我不确定您是否需要价值,所以这应该为您提供相同的:

$b= @"
[
    {
        "op": "remove",
        "path": "/projectEntitlements/$projectID",
        "value": ""
    }
]
"@
于 2020-05-05T23:31:35.953 回答