2014-10-27 31 views
0

我正在开发此TFS 2013以获得所有TFS组的项目级别权限。但我无法获得windows组。 我用下面的代码列出组:TFS 2013获取包括Windows组在内的所有TFS组

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),而不是Windows组(TFS_Builder, TFS_DEV_AM...)TFS组。

有谁知道我该怎么做,或者为什么我无法让Windows群组下的人员?

回答

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); 

这是用户,您可以尝试通过它获取组。

0

嗨非常感谢您的回复。 但我实际上正在查询所有这些窗口组,并从那里我将尝试确定谁是每个组的成员。 你的回答也是正确的,但它只适用于单个用户,并尝试获取memberOf,以便我们知道哪个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);