【发布时间】:2017-03-14 14:49:04
【问题描述】:
我正在为特定 TFS 集合创建一个包含所有 TFS 项目、用户及其关联的 TFS 组的导出文件。 (使用 ITeamProjectCollectionService、IIdentityManagementService)
我注意到我还收到了禁用的 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 中被禁用的用户。