在本地 TFS(Team Foundation Server)2017 环境中,尽管可以选择绝大多数组和用户,但我们无法在发布管理系统的审批者字段中找到来自 Active Directory 的几个组。
我最初怀疑该问题是由于安全性引起的,但即使在将这些组添加为项目管理员后,系统仍然阻止我在下拉列表中找到它们。
我的下一步是确保这些组具有足够的访问级别,但在授予他们 VS Enterprise 访问权限后,问题仍然存在。
尽管我可以在集合安全级别在 TFS 中找到该组,但是我通过 TFS QueueJobNow webservice 运行 Active Directory 同步作业并等待其完成,从而排除了 Active Directory 同步问题。
这使得以下潜在问题得到解决和验证:TFS 安全性、TFS 访问级别和 Active Directory 同步。
我这里遗漏了什么?我是否需要在另一个级别授予该组的访问权限?
答案1
回答我自己的问题以避免其他人遇到麻烦。
问题源于我上面执行的操作顺序。首先必须授予团队项目安全访问权限(我使用的是贡献者访问权限),然后使用下面的 PowerShell 脚本通过 TFS QueueJobNow Web 服务运行 Active Directory 同步作业(请注意,该作业可能需要几分钟才能完成),
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
$configServer = new-object Microsoft.TeamFoundation.Client.TfsConfigurationServer(new-object System.Uri("http://localhost:8080/tfs"))
$tfsJobService = $configServer.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationJobService])
$jobs= $tfsJobService.QueryJobs()
$jobID = new-object System.Guid("544DD581-F72A-45A9-8DE0-8CD3A5F29DFE")
foreach ($job in $jobs)
{
if (($job.JobId -eq $jobID))
{
$Identity_SynchronizationJob = $job
$tfsJobService.QueueJobNow($Identity_SynchronizationJob,$true)
}
}
然后您应该能够在 TFS 的发布管理系统中环境的审批者字段中输入所需的组。