Azure -Devops удаляет пользователя из projectContributor через Rest API - PullRequest
0 голосов
/ 06 мая 2020

С помощью PowerShell Я пытаюсь удалить пользователя из groupType projectContributor, чтобы я мог переместить его в группу проекта. Я могу выполнить sh добавление к команде проекта, однако я пробовал все, что мог, чтобы удалить это право пользователя с помощью PATCH, но безуспешно. FYI, чтобы избежать комментариев, 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

Любая помощь / примеры ценятся. Я просмотрел всю документацию по API для Azure DevOps API.

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Я получил ту же ошибку, используя User Entitlement rest api.

Это сработало для меня с Удалить участника из группы rest 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} из приведенного выше Remove Member From Group api - это userId пользователя. Затем вы можете просто вызвать указанный выше API, чтобы удалить пользователя из группы участников проекта.

0 голосов
/ 06 мая 2020

Попробуйте следующее:

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

И поскольку вы удаляете значение по этому пути, я не уверен, нужно ли вам значение, поэтому это должно предоставить вам то же самое:

$b= @"
[
    {
        "op": "remove",
        "path": "/projectEntitlements/$projectID",
        "value": ""
    }
]
"@
...