[TFS 2015]:将用户从一个AD域迁移到另一个AD域

时间:2018-01-08 13:27:55

标签: tfs2015

我们计划将用户从我们公司域(domainA)迁移到我们母公司的域(domainB)。用户的登录ID将从domainA \ firstname.lastname更改为domainB \ employee#

目前,TFS服务器将驻留在domainA中。

迁移我们的TFS用户并确保他们仍然保持其当前权限的最佳方法是什么?

我确实找到了有关Identities命令的文档: https://docs.microsoft.com/en-us/vsts/tfs-server/admin/move-across-domains

感谢

1 个答案:

答案 0 :(得分:0)

如果您只想跨Active Directory中的域迁移帐户,并将TFS服务器保留在域A中。

您可以使用TFSConfig Identities命令列出或更改TFS部署中用户和组的安全标识符(SID)。

首先,你的两个域之间应该有信任关系。然后按照以下步骤操作:

  • 在新域上创建所有新帐户,不要添加到新域 TFS
  • 以管理员身份打开命令行并导航至“C:Program FilesMicrosoft Team Foundation Server 14.0Tools

  • 使用正确的参数运行TFSConfig Identities,例如

    TFSConfig Identities /change /fromdomain:Domain1 /todomain:Domain2 /account:OldAccount /toaccount:NewAccount

  • 查看结果

  • 强制同步以禁止检索结果或等待 有时会发生同步

注意:TFS中存在用户帐户后,将无法将其删除或将其他帐户映射到该帐户。例如,如果要将DomainA / UserA移动到DomainB / UserB,则只有在TFS中尚未存在DomainB / UserB时,Identities命令才能用于迁移用户。

更多细节步骤请参阅此tutorial

如果您还想将Team Foundation Server安装从一个域移动到另一个域,则需要完全按照说明进行操作:Move Team Foundation Server from one environment to another

从OP更新:

为了防止迁移的用户恢复到之前的帐户,我必须确保他们不属于任何域名组。一旦删除,我运行以下内容:

TFSServiceControl quiesce TFSConfig Identities /change /fromdomain:OldDomainName /todomain:NewDomainName /account:OldAccountName /toaccount:NewAccountName TFSServiceControl unquiesce 

然后我运行了一个强制与TFS进行AD同步的poweshell脚本:

 [Reflection.Assembly]::Load("Microsoft.TeamFoundation.Client, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")

 # connect to the server 
  $credProvider = new-object Microsoft.TeamFoundation.Client.UICredentialsProvider $tfsConnection = new-object Microsoft.TeamFoundation.Client.TfsConfigurationServer "localhost:8080/tfs";, $credProvider $tfsConnection.EnsureAuthenticated()

 # force a full sync on the next sync execution. 
  $tfRegistry = $tfsConnection.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationRegistry]) $tfRegistry.SetValue('/Service/Integration/Settings/IdentitySyncFull', $true)

# Kick the IMS periodic job so that it syncs. 
  $jobIds = [Guid[]] @('544DD581-F72A-45A9-8DE0-8CD3A5F29DFE') $jobSvc = $tfsConnection.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationJobService]) $jobSvc.QueueJobsNow($jobIds, $true)