2014-10-27 63 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);