Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制台应用程序通过输入用户名和集合url打印特定用户的广告和TFS组 命名空间TFSGroupMembersFast { 班级计划 { 静态词典 m_恒等式= 新词典 (IdentityDescriptorComparer.Instance); 静态列表m_C#_Tfs - Fatal编程技术网

C# 控制台应用程序通过输入用户名和集合url打印特定用户的广告和TFS组 命名空间TFSGroupMembersFast { 班级计划 { 静态词典 m_恒等式= 新词典 (IdentityDescriptorComparer.Instance); 静态列表m

C# 控制台应用程序通过输入用户名和集合url打印特定用户的广告和TFS组 命名空间TFSGroupMembersFast { 班级计划 { 静态词典 m_恒等式= 新词典 (IdentityDescriptorComparer.Instance); 静态列表m,c#,tfs,C#,Tfs,控制台应用程序通过输入用户名和集合url打印特定用户的广告和TFS组 命名空间TFSGroupMembersFast { 班级计划 { 静态词典 m_恒等式= 新词典 (IdentityDescriptorComparer.Instance); 静态列表m_组=新建 List(); 静态字符串uname; 静态身份管理服务; 静态列表grname=新列表(); 静态void Main(字符串[]参数) { WriteLine(“输入TFS服务器或项目集合Url”); 控制台。写(“例如。http

控制台应用程序通过输入用户名和集合url打印特定用户的广告和TFS组
命名空间TFSGroupMembersFast
{
班级计划
{
静态词典
m_恒等式=
新词典
(IdentityDescriptorComparer.Instance);
静态列表m_组=新建
List();
静态字符串uname;
静态身份管理服务;
静态列表grname=新列表();
静态void Main(字符串[]参数)
{
WriteLine(“输入TFS服务器或项目集合Url”);
控制台。写(“例如。http://localhost:8080/tfs/defaultcollection: ");
Console.WriteLine();
字符串地址=Console.ReadLine();
Console.WriteLine();
WriteLine(“为项目范围输入团队项目Uri,否则
空字符串“);
控制台。写(“例如。vstfs:///Classification/TeamProject/****: ");
字符串projectUri=Console.ReadLine();
Console.WriteLine();
Console.WriteLine(“输入用户名:”);
uname=Console.ReadLine();
DateTime startTime=DateTime.Now;
TfsTeamProjectCollection tfs=TfsTeamProjectCollectionFactory.GetTeamProjectCollection(TfsTeamProjectCollection.GetFullyQualifiedUriForName(地址));
_ims=tfs.GetService();
if(string.IsNullOrEmpty(projectUri))
{
TeamFoundationIdentity组=
_ims.ReadIdentity(GroupWellKnownDescriptors.EveryoneGroup,
MembershipQuery.Direct、ReadIdentityOptions.None);
m_标识[group.Descriptor]=组;
m_组。添加(组);
//获取“有效用户”组的扩展成员资格,即
此主机中的身份
组=
_ims.ReadIdentity(GroupWellKnownDescriptors.EveryoneGroup,
MembershipQuery.Expanded,ReadIdentityOptions.None);
获取身份(组成员);
}
其他的
{
//获取此项目中的所有组
TeamFoundationIdentity[]项目组=
_ims.listApplicationGroup(projectUri、ReadIdentityOptions.None);
Dictionary descSet=新字典(IdentityDescriptorComparer.Instance);
foreach(项目组中的TeamFoundationIdentity项目组)
{
descSet[projectGroup.Descriptor]=projectGroup.Descriptor;
}
//扩大项目组成员
projectGroups=\u ims.readIdentifies(descSet.Keys.ToArray(),
MembershipQuery.Expanded,ReadIdentityOptions.None);
//收集所有描述符
foreach(项目组中的TeamFoundationIdentity项目组)
{
foreach(projectGroup.Members中的IdentityDescriptor mem)
{
descSet[mem]=mem;
}
}
fetchIdentifies(descSet.Keys.ToArray());
}
//现在输出组及其成员。
foreach(m_组中的TeamFoundationIdentity)
{
书写(身份);
}
Console.WriteLine(String.Format(“================已完成读取{0}
{1}分钟内的标识“,
m_identies.Count,(DateTime.Now-startTime.TotalMinutes));
for(int i=0;ibatchSizeLimit)
{
int batchNum=0;
整数余数=描述符。长度;
IdentityDescriptor[]批描述符=新建
IdentityDescriptor[batchSizeLimit];
而(余数>0)
{
int startAt=batchNum*batchSizeLimit;
int length=batchSizeLimit;
如果(长度>余数)
{
长度=余数;
batchDescriptors=新标识符描述符[长度];
}
Copy(描述符,startAt,批描述符,0,长度);
标识=_ims.readIdentifies(批描述符,
MembershipQuery.Direct、ReadIdentityOptions.None);
实体(身份);
余数-=长度;
}
}
其他的
{
标识=_ims.readIdentifies(描述符,
MembershipQuery.Direct、ReadIdentityOptions.None);
实体(身份);
}
}
静态无效SORTID实体(TeamFoundationIdentity[]标识)
{
foreach(身份中的TeamFoundationIdentity)
{
m_恒等式[identity.Descriptor]=恒等式;
if(identity.IsContainer)
{
m_组。添加(标识);
}
}
}
静态无效写入(TeamFoundationIdentity组)
{
//输出此组的成员资格
WriteLine(“组的成员:{0}”,group.DisplayName);
Console.WriteLine(“============================”);
foreach(组成员中的IdentityDescriptor memDesc)
{
Console.WriteLine(m_标识[memDesc].DisplayName);
如果(m_ide
namespace TFSGroupMembersFast
{
    class Program
    {
        static Dictionary<IdentityDescriptor, TeamFoundationIdentity> 
        m_identities =
        new Dictionary<IdentityDescriptor, TeamFoundationIdentity> 
        (IdentityDescriptorComparer.Instance);
        static List<TeamFoundationIdentity> m_groups = new 
        List<TeamFoundationIdentity>();
        static string uname;
        static IIdentityManagementService _ims;
        static List<string> grname = new List<string>();
        static void Main(string[] args)
        {
            Console.WriteLine("Enter TFS server or project collection Url");
            Console.Write("e.g. http://localhost:8080/tfs/defaultcollection: ");
            Console.WriteLine();
            string address = Console.ReadLine();
            Console.WriteLine();

            Console.WriteLine("Enter Team Project Uri for project scope, else 
            empty string");
            Console.Write("e.g. vstfs:///Classification/TeamProject/****: ");
            string projectUri = Console.ReadLine();
            Console.WriteLine();
            Console.WriteLine("Enter user name:");
            uname = Console.ReadLine();

            DateTime startTime = DateTime.Now;

            TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(TfsTeamProjectCollection.GetFullyQualifiedUriForName(address));
            _ims = tfs.GetService<IIdentityManagementService>();

            if (string.IsNullOrEmpty(projectUri))
            {
                TeamFoundationIdentity group = 
                _ims.ReadIdentity(GroupWellKnownDescriptors.EveryoneGroup, 
                MembershipQuery.Direct, ReadIdentityOptions.None);
                m_identities[group.Descriptor] = group;
                m_groups.Add(group);

                // Get expanded membership of the Valid Users group, which is all 
                identities in this host             
                group = 
                _ims.ReadIdentity(GroupWellKnownDescriptors.EveryoneGroup, 
                MembershipQuery.Expanded, ReadIdentityOptions.None);
                FetchIdentities(group.Members);
            }
            else
            {
                // Get all groups in this project
                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)
                    {
                        descSet[mem] = mem;
                    }
                }

                FetchIdentities(descSet.Keys.ToArray());
            }

            // Now output groups and their members.
            foreach (TeamFoundationIdentity identity in m_groups)
            {
                Write(identity);
            }

            Console.WriteLine(String.Format("======= Finished reading {0} 
            identities in {1} minutes",
                m_identities.Count, (DateTime.Now - startTime).TotalMinutes));

            for (int i = 0; i < grname.Count; i++)
            {
                Console.WriteLine(grname[i]);
            }
            Console.ReadLine();
        }

        static void FetchIdentities(IdentityDescriptor[] descriptors)
        {
            TeamFoundationIdentity[] identities;

            // If total membership exceeds batch size limit for Read, break it up
            int batchSizeLimit = 100000;

            if (descriptors.Length > batchSizeLimit)
            {
                int batchNum = 0;
                int remainder = descriptors.Length;
                IdentityDescriptor[] batchDescriptors = new 
                IdentityDescriptor[batchSizeLimit];

                while (remainder > 0)
                {
                    int startAt = batchNum * batchSizeLimit;
                    int length = batchSizeLimit;
                    if (length > remainder)
                    {
                        length = remainder;
                        batchDescriptors = new IdentityDescriptor[length];
                    }

                    Array.Copy(descriptors, startAt, batchDescriptors, 0,length);
                    identities = _ims.ReadIdentities(batchDescriptors, 
                    MembershipQuery.Direct, ReadIdentityOptions.None);
                    SortIdentities(identities);
                    remainder -= length;
                }
            }
            else
            {
                identities = _ims.ReadIdentities(descriptors, 
                MembershipQuery.Direct, ReadIdentityOptions.None);
                SortIdentities(identities);
            }
        }

        static void SortIdentities(TeamFoundationIdentity[] identities)
        {
            foreach (TeamFoundationIdentity identity in identities)
            {
                m_identities[identity.Descriptor] = identity;

                if (identity.IsContainer)
                {
                    m_groups.Add(identity);
                }
            }
        }

        static void Write(TeamFoundationIdentity group)
        {
            // Output this group's membership
            Console.WriteLine("Members of group: {0}", group.DisplayName);
            Console.WriteLine("=================");

            foreach (IdentityDescriptor memDesc in group.Members)
            {
                Console.WriteLine(m_identities[memDesc].DisplayName);
                if (m_identities[memDesc].DisplayName == uname)
                {
                    grname.Add(group.DisplayName);

                }
            }
            Console.WriteLine();
        }
    }
}
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Server;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GetUser
{
    class Program
    {
        static void Main(string[] args)
        {
            TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri("http://server:8080/tfs/DefaultCollection"));
            tfs.EnsureAuthenticated();

            IGroupSecurityService gss = tfs.GetService<IGroupSecurityService>();

            Identity SIDS = gss.ReadIdentity(SearchFactor.AccountName, "Project Collection Valid Users", QueryMembership.Expanded);

            Identity[] UserId = gss.ReadIdentities(SearchFactor.Sid, SIDS.Members, QueryMembership.Direct);

            foreach (Identity user in UserId)
            {
                if (user != null)
                {
                    Console.WriteLine(user.AccountName);
                    Console.WriteLine(user.Domain);
                }
            }
            Console.ReadKey();
        }
    }
}