c# - 通过 REST API 从 TFS 获取所有成员/用户
问题描述
我尝试使用 REST API 和.NET 客户端库来获取 TFS 的所有成员/用户。
它有效,但我最多可以获得 50 个身份。有谁知道,我如何获得所有用户,而不仅仅是 50?(我更喜欢避免使用旧 API,如何在这个问题中提出建议)
这是我的代码:
VssCredentials credentials = new VssCredentials();
VssConnection connection = new VssConnection(new Uri(url), credentials);
IdentityMruHttpClient identityMruHttpClient = connection.GetClient<IdentityMruHttpClient>();
List<IdentityRef> members = identityMruHttpClient.GetIdentityMruAsync(ProjectName).Result;
解决方案
有一个 REST API User Entitlements - List可以从 VSTS ( Visual Studio Team Services
) 中检索用户列表,但它仅适用于 VSTS。
没有这样的 REST API 可以从本地 TFS(您的场景中的 TFS 2017)中检索用户列表。
因此,现在您可以使用上面提到的客户端 API来检索用户列表。经过我这边的测试,我可以使用以下代码检索所有身份(超过 50 个):
您还可以从userlist.txt
文件中检查用户列表..\..\ \bin\Debug\
using System;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Framework.Client;
using Microsoft.TeamFoundation.Framework.Common;
using System.Linq;
using System.IO;
namespace Getuserlist
{
class Program
{
static void Main(string[] args)
{
TfsConfigurationServer tcs = new TfsConfigurationServer(new Uri("http://server:8080/tfs"));
IIdentityManagementService ims = tcs.GetService<IIdentityManagementService>();
TeamFoundationIdentity tfi = ims.ReadIdentity(IdentitySearchFactor.AccountName, "Project Collection Valid Users", MembershipQuery.Expanded, ReadIdentityOptions.None);
TeamFoundationIdentity[] ids = ims.ReadIdentities(tfi.Members, MembershipQuery.None, ReadIdentityOptions.None);
using (StreamWriter file = new StreamWriter("userlist.txt"))
foreach (TeamFoundationIdentity id in ids)
{
if (id.Descriptor.IdentityType == "System.Security.Principal.WindowsIdentity")
{ Console.WriteLine(id.DisplayName); }
//{ Console.WriteLine(id.UniqueName); }
file.WriteLine("[{0}]", id.DisplayName);
}
var count = ids.Count(x => ids.Contains(x));
Console.WriteLine(count);
Console.ReadLine();
}
}
}
推荐阅读
- photon - 如何在统一光子中使用 Rpc(脚本不起作用)
- r - 使用 gtsummary 对表中的回归变量进行排序
- heroku-cli - 从树莓派自动登录到heroku
- transactions - 您将如何构建一个事务安全的内存数据库?酸度是这里的关键
- javascript - 如何更改要下载的文件的名称?
- javascript - 如何在下一个 js 持久性布局中传递动态道具
- javascript - 如何操作 axios 响应并返回一个 Promise?
- javascript - 无法更新用于计数字母的对象属性编号(计数器)
- javascript - 天气网络应用程序上的即时天气警报?
- powershell - 在 PowerShell 中将非文字脚本变量传递给 Invoke-Sqlcmd 时出错