我正在为所有TFS项目,用户及其关联的TFS组创建一个导出文件以用于特定的TFS集合。 (使用ITeamProjectCollectionService,IIdentityManagementService)与TFS 2015(内部部署)的互动
我注意到我还收到了禁用的AD用户。我怎样才能从这个列表中过滤禁用的AD用户?我无法直接访问AD环境。 Microsoft.TeamFoundation.Server.Identity不包含此属性。
Uri configurationServerUri = new Uri(environmentConfig.Uri);
TfsConfigurationServer configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(configurationServerUri);
var tpcService = configurationServer.GetService<ITeamProjectCollectionService>();
foreach (TeamProjectCollection tpc in tpcService.GetCollections())
{
var tfsProjectCollection = new TfsTeamProjectCollection(new Uri(environmentConfig.Uri + "/" + tpc.Name), environmentCredential);
var vcs = tfsProjectCollection.GetService<VersionControlServer>();
var sec = tfsProjectCollection.GetService<IGroupSecurityService>();
var teamProjects = vcs.GetAllTeamProjects(false);
foreach (var teamProject in teamProjects)
{
var appGroups = sec.ListApplicationGroups(teamProject.ArtifactUri.AbsoluteUri);
foreach (var group in appGroups)
{
Identity[] groupMembers = sec.ReadIdentities(SearchFactor.Sid, new string[] { group.Sid }, QueryMembership.Expanded);
foreach (Identity member in groupMembers)
{
if (member.Members != null)
{
foreach (string memberSid in member.Members)
{
Identity memberInfo = sec.ReadIdentity(SearchFactor.Sid, memberSid, QueryMembership.Expanded);
if (memberInfo.Type != IdentityType.WindowsUser)
continue;
result.Add(new TfsPermission { Collection = tfsProjectCollection.Name, TeamProject = teamProject.Name,
User = memberInfo.AccountName, Domain = memberInfo.Domain, Group = group.DisplayName });
}
}
}
}
}
}
最好的问候, 延
你能告诉我们代码吗? –
添加了代码。我们遍历每个身份并将它们添加到列表中。该函数返回身份列表。 我想过滤掉在Active Directory中被禁用的用户。 – Jens