正在检索用户电子邮件&;显示Team Foundation Server中的名称
本文关键字:Server Foundation Team 显示 检索 用户 电子邮件 amp | 更新日期: 2023-09-27 18:28:52
我的目标是在TFS中检索整个用户的整个电子邮件地址。我终于成功地获得了用户的SID列表,但我认为这没关系,因为组中有一些组我检索SID,我不知道如何访问它。这是我代码中的重要部分,希望能在这里得到答案。
TeamFoundationIdentity[] projectGroups = _ims.ListApplicationGroups(projectUri, ReadIdentityOptions.None);
Dictionary<IdentityDescriptor, object> descSet = new Dictionary<IdentityDescriptor, object>(IdentityDescriptorComparer.Instance);
foreach (TeamFoundationIdentity projectGroup in projectGroups)
{
descSet[projectGroup.Descriptor] = projectGroup.Descriptor;
}
// Expanded membership of project groups
projectGroups = _ims.ReadIdentities(descSet.Keys.ToArray(), MembershipQuery.Expanded, ReadIdentityOptions.None);
// Collect all descriptors
foreach (TeamFoundationIdentity projectGroup in projectGroups)
{
foreach (IdentityDescriptor mem in projectGroup.Members)
{
TeamFoundationIdentity[] _identities = _ims.ReadIdentities(new IdentityDescriptor[] {mem}, MembershipQuery.Expanded, ReadIdentityOptions.None);
foreach(TeamFoundationIdentity id in _identities)
{
//the sid
Console.WriteLine(id.Descriptor.Identifier);
}
}
}
}
我使用以下代码获取TeamProjectCollection的所有用户:
IGroupSecurityService gss = (IGroupSecurityService)tfsConnection.GetService(typeof(IGroupSecurityService));
Identity SIDS = gss.ReadIdentity(SearchFactor.AccountName, "Project Collection Valid Users", QueryMembership.Expanded);
Identity[] UserId = gss.ReadIdentities(SearchFactor.Sid, SIDS.Members, QueryMembership.None);
foreach (Identity user in UserId)
{
// check if group or user
if (!user.SecurityGroup)
{
Console.Writeln(user.DisplayName +" -> "+ user.Domain + "'" + user.AccountName + "-" + user.MailAddress);
}
}
因此,首先我使用递归标志QueryMembership.Expanded
获取Valid users组的所有用户(包括组)。然后将成员的SID列表转换为用户的身份列表,用户以可读的方式拥有所有信息。