TFS 2013获取包括Windows组在内的所有TFS组

时间:2014-10-27 08:03:10

标签: tfs

我正在开发此TFS 2013以获得所有TFS组的项目级别权限。但我不能得到Windows组。 我使用以下代码列出组:

var applicationGroups = identityManagementService.ListApplicationGroups(project.Uri.AbsoluteUri, ReadIdentityOptions.None);

但是此代码仅列出团队([project]\Project Team)和VSO组([project]\Build Administrators, [project]\Contributors, [project]\Readers, [project]\Project Administrators, [project]\Project Valid Users, [project]\TFS_Build_Administrators, [project]\TFS_Build_Readers)下的TFS组,但不列出Windows组(TFS_Builder, TFS_DEV_AM...)。

有谁知道我怎么做到这一点,或者为什么我无法获得Windows组下的人?


嗨非常感谢您的回复。 但我实际上是想查询所有这些窗口组,并从那里我将尝试确定谁是每个组的成员。 您的答案也是正确的,但它仅适用于单个用户并尝试获取memberOf,以便我们知道哪个窗口组是用户的成员。 我只是把它标记为是因为我找到了一种方法,我可以通过该代码列出它。但是我不确定我是否可以再次发布另一个问题。无论如何。 以下是TFS 2013的新代码,因为IGroupSecurityService已过时。



var collection = new TfsTeamProjectCollection(new Uri("http://mytfs:8080/tfs/MyCollection"));
var identityService = collection.GetService<IIdentityManagementService>();
var readIdentity = identityService.ReadIdentity(IdentitySearchFactory.AccountName, @"[domailName here]\" + userName, MembershipQuery.Direct, ReadIdentityOptions.None);
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

Windows组不存储在TFS中,而是存储在Active Directory中。要通过TFS查询Active Directory,请使用:

var collection = new TfsTeamProjectCollection(new Uri("http://mytfs:8080/tfs/MyCollection"));
var gss = collection.GetService<IGroupSecurityService>();
Identity i = gss.ReadIdentity(SearchFactor.AccountName, "myalias", QueryMembership.Direct);

这是一个用户,您也可以尝试通过它来获取群组。