Попытка установить AssignedTo в рабочий элемент - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь установить AssignedTo в сценарии PowerShell, используя REST API. У пользователя уже есть несколько назначенных рабочих элементов, и он находится в системе несколько месяцев. Я пробовал использовать отображаемое имя, адрес электронной почты (такой же, как upn) и ссылку на удостоверение личности. Все дает тот же результат:

Invoke-WebRequest: {"$ id": "1", "customProperties": {"ReferenceName": "System.AssignedTo"}, "innerException": null, "message ":" Значение идентификатора 'xxx@xxx.com' для поля 'Assigned To' является неизвестным идентификатором. "," TypeName ":" Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemFieldInvalidException, Microsoft.TeamFoundation.WorkItemTracking.Server "," typeKey ":" WorkItemFieldInvalidExce

Я использую следующий сценарий:

$tfsToken = "MYPAT"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($tfsToken)"))

$defaultColletion = "default_Collection"

$project = "Agile"

$childID = "63573"

$identityUpn = "xxx@xxx.com"


$childuri = ("http://tfs:8080/tfs/" + $defaultColletion + "/" + $project + "/_apis/wit/workitems?ids=" + $childID + "&expand=relations&api-version=5.0")
$header = @{authorization = "Basic $token"}

$childresult = Invoke-WebRequest -Uri $childuri -Method Get -Headers $header -ContentType "application/json-patch+json"


$childObj = $childresult.Content | ConvertFrom-Json
$updUrl = ($childObj.value.url + "?api-version=5.0")


$ownerUpd = @{}
$ownerUpd.Add("path","/fields/System.AssignedTo")
$ownerUpd.Add("op","add")
$ownerUpd.Add("value",$identityUpn)

$json =  ConvertTo-Json @($ownerUpd) -Depth 5
$result = Invoke-WebRequest -Uri $updUrl -Headers $header -Method Patch -Body $json -ContentType "application/json-patch+json"

1 Ответ

1 голос
/ 18 июня 2020

Вы можете установить в System.AssignedTo именно то, что вы видите в поле Назначено в рабочем элементе: Display Name пользователя. Вы можете найти здесь пример Обновить поле идентификатора по отображаемому имени :

[      
  {
    "op": "add",
    "path": "/fields/System.AssignedTo",
    "value": "Jamal Hartnett"
  }
]

Дополнительные примеры:

  1. Обновить поле идентификатора с помощью отдельного отображения name
  2. Обновить поле идентификатора с помощью IdentityRef
...