如何在TFS 2015中复制团队项目间的TFS组、权限及AD组?
复制TFS组与权限到另一个团队项目
我在处理TFS权限迁移方面有不少经验,针对你在TFS 2015里的需求,分两部分给你详细解答:
一、复制TFS组与对应权限
方法1:手动操作(适合小规模项目)
如果你的团队项目权限结构不复杂,手动操作是最直接的:
- 打开团队资源管理器,进入源团队项目的「项目设置」→「权限」页面
- 右键选中要复制的TFS组,选择「导出权限」,把权限配置保存为CSV文件做参考
- 切换到目标团队项目,在同样的权限页面创建同名的TFS组(保持命名一致能减少后续混乱)
- 对照导出的CSV报告,逐个给新建组配置相同的权限——要注意覆盖所有节点,比如源代码管理根目录、工作项区域/迭代、项目级权限等
- 如果源组里有成员,直接在目标组中添加对应的成员(AD用户/组可以直接搜索添加)
方法2:PowerShell脚本自动化(适合大规模/重复场景)
TFS 2015提供了官方PowerShell模块,能帮你批量迁移权限,效率更高:
- 先加载TFS PowerShell模块:
Add-PSSnapin Microsoft.TeamFoundation.PowerShell - 连接到你的TFS服务器与集合:
$tfsCollection = Get-TfsServer http://your-tfs-server:8080/tfs/YourCollectionName - 获取源项目与目标项目的对象:
$sourceProject = $tfsCollection.GetService([Microsoft.TeamFoundation.Server.ICommonStructureService]).GetProjectFromName("SourceProjectName") $targetProject = $tfsCollection.GetService([Microsoft.TeamFoundation.Server.ICommonStructureService]).GetProjectFromName("TargetProjectName") - 导出源项目的权限信息,然后在目标项目创建组并同步权限:
注意:脚本可能需要根据你的实际权限节点(比如源代码控制、工作项)做微调,测试时建议先在非生产环境验证。# 获取源项目的所有组权限(递归包含子节点) $sourcePermissions = Get-TfsPermission -Project $sourceProject -Recurse foreach ($perm in $sourcePermissions) { # 检查目标项目是否已存在同名组,不存在则创建 $targetGroup = Get-TfsGroup -Project $targetProject -GroupName $perm.Identity.DisplayName -ErrorAction SilentlyContinue if (-not $targetGroup) { $targetGroup = New-TfsGroup -Project $targetProject -GroupName $perm.Identity.DisplayName -Description $perm.Identity.Description } # 同步权限设置 Set-TfsPermission -Project $targetProject -Identity $targetGroup -Allow $perm.Allow -Deny $perm.Deny -Item $perm.Item.ServerItem }
二、复制TFS中的AD组到其他团队项目
首先要明确:AD组是存储在你的域控制器中的,不需要“复制”AD组本身——你只需要把这些AD组添加到目标项目的对应TFS组,或者直接给它们分配权限即可:
方法1:手动添加
- 进入目标团队项目的权限页面,打开要添加AD组的TFS组(或者直接在项目级权限中添加)
- 点击「添加」按钮,在搜索框输入AD组的名称,选中后确认添加
- 参照源项目的权限配置,给这个AD组设置相同的权限
方法2:PowerShell批量添加
如果有大量AD组需要迁移,可以用脚本自动化:
# 获取源项目中目标TFS组的所有AD成员 $sourceGroup = Get-TfsGroup -Project $sourceProject -GroupName "YourSourceTfsGroupName" $adMembers = Get-TfsGroupMember -Group $sourceGroup | Where-Object { $_.IdentityType -match "Windows" } # 获取目标项目的对应TFS组 $targetGroup = Get-TfsGroup -Project $targetProject -GroupName "YourTargetTfsGroupName" # 批量添加AD成员到目标组 foreach ($member in $adMembers) { Add-TfsGroupMember -Group $targetGroup -Member $member }
额外注意事项
- 确保你拥有TFS集合管理员或项目管理员权限,否则无法创建组或修改权限
- 迁移前建议先在测试环境验证配置,避免影响生产环境的正常使用
- 对于特殊权限(比如特定文件夹的自定义权限),要逐一核对,避免遗漏
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

