簡體   English   中英

在 TFS2018 工作項“分配給”字段中找不到某些現有用戶。 甚至他們被添加到團隊項目中

[英]some existing users cant be found in TFS2018 workitem 'assigned to' field. even they are added to team project

我的客戶正在使用 TFS2018 update2 版本。 AD用於管理TFS用戶。 現在大約有1000個用戶。 大約 10 到 20 個用戶報告在 TFS 工作項“分配給”字段中找不到他們的用戶帳戶。 如此奇怪和困惑!

1)我們確實檢查了工作項設置的'AssignedTo'字段,是默認設置,允許現有用戶和有效用戶。 2)用戶甚至被添加到團隊項目中,但是,在“分配給”字段中使用搜索時無法找到他們。

3) 嘗試過其他類型的工作項,任何項目。 同樣的問題。

一般來說,這樣的用戶是可以成功添加到團隊項目中的。並且在所有項目的所有工作項的'assigned to'字段中都找不到他們。 所以我們懷疑這是某種用戶帳戶同步問題?

我們確實做了更多的調查和調試。 我們找到了一個名為operationScopes 的參數,它的值是“ ims ”;如果我們將值“ ad ”添加到這個數組中。 用戶可以找到! 我們注意到這種“壞用戶”和“好用戶”之間的返回值 bdifference 屬於“本地目錄”和“localId”字段。 這里的值為空,對於好的用戶,本地目錄LocalID都不為空。 希望這條線索有效。 http://TFS2018server:8080/tfs/TFSCollection/_apis/IdentityPicker/Identities 在此處輸入圖片說明

並添加更多線索,我們更新了 Web Services_static\\tfs\\Dev16.M122.5_script\\TFS\\debug\\VSS\\Identities\\Picker\\Services.js 通過在OperationScope.IMS開關中添加queryScopes.push("ims"),就可以找到用戶。 而且我知道,這不是更新 TFS 代碼的好方法,它只是用於調試。 希望它有用。 更新 Services.js 文件

根據調查和測試,似乎是 AD 同步問題。 這意味着錯過的用戶可能不會同步到 TFS。

因此,當您在 AD 中查詢錯過的用戶時,您可以找到它(將值“ ad ”添加到operationScopes ),但在 TFS 中您找不到它們。

TFS 使用每小時安排一次的后台同步作業來查找 Active Directory(或本地計算機工作組,如果服務器未加入域)中的更改。 您可以使用以下任何一種技術強制運行作業: 如何將 TFS 用戶與 AD 同步

可能是即使同步正在工作,您仍然看不到 UI 中列出的用戶或名稱。 同步作業不會為數據庫中的每個用戶或組自動在數據庫中創建用戶配置文件,以避免在大企業中無用的增長。

在這種情況下,第一次使用新的 AD 帳戶(用戶或組)時,您必須使用DOMAIN\\account語法引用它,以便 TFS 即時在 AD 中查找並在數據庫中插入配置文件記錄帳戶。

如果您仍有問題,Hinsh 先生有一個很好的故障排除指南 它仍然適用於 TFS 2018 Update2

當我嘗試將用戶添加到安全組時,我在 Azure DevOps Server 2019(版本 Dev17.M153.3)中遇到了同樣的問題使用相同的用戶名會引發以下錯誤

找到多個與“用戶名”匹配的身份。 使用唯一名稱指定以下身份之一:

  • fullname1(唯一名稱:domain1\\theusername)
  • fullname2(唯一名稱:domain2\\theusername)

但其他集合中的同一用戶正在工作。

在 C:\\Program Files\\Azure DevOps Server 2019\\Application Tier\\Web Services_static\\tfs\\Dev17.M153.3_scripts\\TFS\\debug\\VSS\\Identities\\Picker\\Services.js queryScopes.push("ims") 已經存在.

經過一番調查,我可以將問題簡化為以下 powershell 代碼

$url1 = "https://tfsserver/CB/_apis/IdentityPicker/Identities?api-version=5.1-preview.1"
$Body = '{"query":"mydomainname\\myusername","identityTypes":["user","group"],"operationScopes":["ims","ad","wmd"],"properties":["DisplayName","IsMru","ScopeName","SamAccountName","Active","SubjectDescriptor","Department","JobTitle","Mail","MailNickname","PhysicalDeliveryOfficeName","SignInAddress","Surname","Guest","TelephoneNumber","Description"],"filterByAncestorEntityIds":[],"filterByEntityIds":[],"options":{"MinResults":40,"MaxResults":40,"ExtensionId":"F12CA7AD-00EE-424F-B6D7-9123A60F424F","ProjectScopeName":"ateamprojectname","CollectionScopeName":"badcollection","Constraints":[]}}'
$x= Invoke-Webrequest $url1 -Method POST -ContentType application/json -UseDefaultCredentials -Body $Body
$y = $x.Content | ConvertFrom-Json
Write-Host "badcollection->", $y.results.identities.scopeName

$url1 = "https://tfsserver/CB_TestCollection/_apis/IdentityPicker/Identities?api-version=5.1-preview.1"
$Body = '{"query":"mydomainname\\myusername","identityTypes":["user","group"],"operationScopes":["ims","ad","wmd"],"properties":["DisplayName","IsMru","ScopeName","SamAccountName","Active","SubjectDescriptor","Department","JobTitle","Mail","MailNickname","PhysicalDeliveryOfficeName","SignInAddress","Surname","Guest","TelephoneNumber","Description"],"filterByAncestorEntityIds":[],"filterByEntityIds":[],"options":{"MinResults":40,"MaxResults":40,"ExtensionId":"F12CA7AD-00EE-424F-B6D7-9123A60F424F","ProjectScopeName":"ateamprojectname","CollectionScopeName":"goodCollection","Constraints":[]}}'
$x= Invoke-Webrequest $url1 -Method POST -ContentType application/json -UseDefaultCredentials -Body $Body
$y = $x.Content | ConvertFrom-Json
Write-Host "goodcollection->", $y.results.identities.scopeName

第一個寫主機的輸出結果是“badcollection->”,但第二個寫主機的輸出結果是“goodcollection->mydomainname”

問題是:為什么它依賴於收集? 我如何強制 tfs 同步壞集合和好的集合的用戶帳戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM