TFS SDK 10 ——分组(Group)和成员(Member)

这篇来介绍怎样读取TFS服务器上的用户信息

首先TFS默认有如下分组(Group):

SharePoint Web Application Services

Team Foundation Administrators

Team Foundation Proxy Service Accounts

Team Foundation Service Accounts

Team Foundation Valid Users

Work Item Only View Users

其中

Team Foundation Valid Users 包含其他所有分组

Team Foundation Administrators 包含 Team Foundation Service Accounts

然后每一个Collection也有类似如上的默认分组,及同样的包含关系

Project Collection Administrators

Project Collection Build Administrators

Project Collection Build Service Accounts

Project Collection Proxy Service Accounts

Project Collection Service Accounts

Project Collection Test Service Accounts

Project Collection Valid Users

其中

Project Collection Valid Users 包含其他所有分组

Project Collection Administrators包含Project Collection Service Accounts

我们可以在TFS server 端看到这些。

using Microsoft.TeamFoundation.Client;

using Microsoft.TeamFoundation.Server;

using Microsoft.TeamFoundation.VersionControl.Client;

//连接TFS
string tpcURL = "http://127.0.0.1:8080/tfs/defaultcollection";
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(tpcURL));
IGroupSecurityService gss = (IGroupSecurityService)tpc.GetService(typeof(IGroupSecurityService));//所有关于分组和成员的相关的操作都是基于IGroupSecurityService的。
//1:获取全部用户
//先查出用户的Id。参数 QueryMembership 指定是否包含其下从属分组的用户
Identity sids = gss.ReadIdentity(SearchFactor.AccountName, "Team Foundation Valid Users", QueryMembership.Expanded);

//通过id获取用户的信息,包括名称,邮箱等等
var members = gss.ReadIdentities(SearchFactor.Sid, sids.Members, QueryMembership.Expanded);

 //2:获取指定项目下的所有分组
VersionControlServer version = tpc.GetService(typeof(VersionControlServer)) as VersionControlServer;
TeamProject[] allProjects = version.GetAllTeamProjects(true);
string projectUrl = allProjects[].ArtifactUri.AbsoluteUri;
Identity[] groups = gss.ListApplicationGroups(projectUrl);
//3:添加分组
string groupName = "MyGroup";
string desp = "My Group Description";
string groupSid = gss.CreateApplicationGroup(projectUrl, groupName, desp);
//4: 删除分组
gss.DeleteApplicationGroup(groupSid);
//5:获取指定分组下的成员
Identity group = groups[];
var gsids = gss.ReadIdentity(SearchFactor.Sid, group.Sid, QueryMembership.Expanded);
Identity[] gmembers = gss.ReadIdentities(SearchFactor.Sid, gsids.Members, QueryMembership.Expanded);
//成员不一定是指用户(User) ,也可能是分组(Group)
//成员的类型有如下几种:
//gmembers[0].Type== IdentityType.ApplicationGroup;
//gmembers[0].Type== IdentityType.InvalidIdentity
//gmembers[0].Type== IdentityType.UnknownIdentityType
//gmembers[0].Type== IdentityType.WindowsGroup
//gmembers[0].Type== IdentityType.WindowsUser

//6:把指定成员添加到指定分组
string memberSid = gmembers[].Sid;
gss.AddMemberToApplicationGroup(group.Sid, memberSid);
//7:把指定成员从指定分组移除
gss.RemoveMemberFromApplicationGroup(group.Sid, memberSid);

最新文章

  1. MYSQL进阶,新手变司机
  2. sublime使用小技巧——自动保存后缀名与自动匹配语法
  3. Oracle导入导出命令
  4. max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
  5. 定制Bootstrap遇到无法下载的解决——Blob下载注意事项
  6. POJ 2955 括号匹配,区间DP
  7. 【python】【转】Python生成随机数的方法
  8. [iOS]C语言知识点系列视频
  9. java基础之类与对象2
  10. 安装Appium
  11. 敏捷冲刺每日报告二(Java-Team)
  12. Android从入门到进阶——布局
  13. QT socket网络通信
  14. angular 2 - 006 change detection 脏治检查 - DC
  15. Learning-Python【34】:进程之生产者消费者模型
  16. centos7 static for django2.1
  17. py-day1-3 python基本数据类型
  18. jquery源码学习
  19. .net 根据图片网络地址获取图片二进制字节数据流
  20. 域名、ip、以及通过域名访问网站、虚拟主机

热门文章

  1. [Scikit-learn] 2.5 Dimensionality reduction - ICA
  2. Dubbo -- 系统学习 笔记 -- 示例 -- 启动时检查
  3. 8 -- 深入使用Spring -- 4...1 为什么需要AOP
  4. MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes
  5. ios开发之-- tableview/collectionview获取当前点击的cell
  6. 关于C中函数传参的一点理解
  7. Netty权威指南之伪异步I/O编程
  8. Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL
  9. iOS开发--UILineBreakModeWordWrap deprecated
  10. codeforces水题100道 第二十四题 Codeforces Beta Round #85 (Div. 2 Only) A. Petya and Strings (strings)