如何从TFS2013服务器彻底移除用户(包括项目有效用户列表)
彻底移除TFS2013用户的批量解决方案
嘿,手动删50个项目的用户权限确实够头疼的!我来给你分享几个高效的批量处理方法,帮你彻底把这位用户从TFS2013系统里清理干净:
方法一:使用TFS命令行工具(tf.exe)快速批量移除
TFS自带的tf.exe命令行工具是处理这类批量权限操作的利器,步骤如下:
- 定位tf.exe路径:它通常在VS2013的安装目录里,打开命令提示符切换到该目录:
cd "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE"
- 批量移除用户的直接权限:运行以下命令,一次性移除用户在所有集合和项目的直接权限:
tf security /remove "DOMAIN\UserName" /server:http://your-tfs-server:8080/tfs /collection:* /project:*
- 参数说明:
/remove指定移除操作,/server填你的TFS服务器地址,/collection:*和/project:*表示覆盖所有集合和项目。
- 清理用户所在的TFS组:如果用户是通过组继承的权限,还需要把他从相关组中移除。先列出所有组:
tf security /groups /server:http://your-tfs-server:8080/tfs /collection:*
然后针对包含该用户的组,运行移除命令:
tf security "GroupName" /remove "DOMAIN\UserName" /server:http://your-tfs-server:8080/tfs /collection:CollectionName
方法二:使用PowerShell脚本实现全自动化
如果你想更省心,用PowerShell脚本可以自动遍历所有集合和项目,完成所有清理操作:
- 导入TFS PowerShell模块:
Import-Module "C:\Program Files (x86)\Microsoft Team Foundation Server 2013\Tools\Microsoft.TeamFoundation.PowerShell.dll"
- 连接到TFS服务器:
$tfsServer = Get-TfsServer http://your-tfs-server:8080/tfs
- 批量遍历并清理权限:
$collections = $tfsServer.Collections foreach ($collection in $collections) { # 获取当前集合下的所有项目 $projects = $collection.GetService([Microsoft.TeamFoundation.Server.ICommonStructureService]).ListProjects() foreach ($project in $projects) { # 移除用户的直接项目权限 tf security /remove "DOMAIN\UserName" /server:$tfsServer.Uri.AbsoluteUri /collection:$collection.Name /project:$project.Name # 移除用户所在的项目组 $groups = tf security /groups /server:$tfsServer.Uri.AbsoluteUri /collection:$collection.Name /project:$project.Name | Select-String "^\s*DOMAIN\\.*" foreach ($group in $groups) { $groupName = $group.Line.Trim() tf security "$groupName" /remove "DOMAIN\UserName" /server:$tfsServer.Uri.AbsoluteUri /collection:$collection.Name /project:$project.Name } } }
关键注意事项
- 权限要求:执行这些操作需要你拥有TFS服务器管理员权限或目标项目的管理员权限,否则会提示权限不足。
- 历史记录保留:移除用户后,他的历史操作记录(如代码提交、工作项修改)不会被删除——这是TFS的设计,确保历史完整性,无需担心。
- AD组同步:如果用户是通过Active Directory组获得TFS权限的,要先确认他已经从对应的AD组中移除,否则权限可能会重新同步回来。
- 备份建议:操作前最好备份TFS数据库,以防万一出现意外可以快速恢复。
内容的提问来源于stack exchange,提问作者Rama
相关产品推荐
相关产品推荐

