这可能是一个愚蠢的问题,但我以前从未查询过Active Directory用户,而且我没有域可以进行测试。所以我必须在客户环境中测试这个片段。现在,我有这个代码
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, domainName))
{
using (PrincipalSearcher searcher = new PrincipalSearcher(new UserPrincipal(context)))
{
foreach (Principal result in searcher.FindAll())
{
Console.WriteLine("Principal Data");
Console.WriteLine("Description: " + result.Description);
Console.WriteLine("Display Name: " + result.DisplayName);
Console.WriteLine("Distinguished Name: " + result.DistinguishedName);
Console.WriteLine("Name: " + result.Name);
Console.WriteLine("SAM Account Name: " + result.SamAccountName);
Console.WriteLine("Structural Object Class: " + result.StructuralObjectClass);
Console.WriteLine("User Principal Name: " + result.UserPrincipalName);
Console.WriteLine("Context Data");
Console.WriteLine("Connected Server: " + context.ConnectedServer);
Console.WriteLine("Container: " + context.Container);
Console.WriteLine("Name: " + context.Name);
Console.WriteLine("UserName: " + context.UserName);
Console.WriteLine();
Console.WriteLine("------------------------------------------------------------------");
Console.WriteLine();
}
}
}
但是我没有找到以DOMAINNAME \ SAMUSERNAME格式引入用户的属性。如果我使用例如:
string.Format("{0}\\{1}", context.Name, result.SamAccountName);
我得到像 domainname.local \ samusername 这样的内容,但我希望它像 DOMAINNAME \ SAMUSERNAME 一样。我知道我可以做到
string.Format("DOMAINNAME\\{0}", result.SamAccountName);
但我不希望它被硬编码。
我也不确定是否使用
string.Format("{0}\\{1}", context.Name.Split(new string[] { "." }, StringSplitOptions.None)[0].ToUpper(), result.SamAccountName);
适用于任何情况。
这是针对会员用户管理页面,用户列表将让管理员选择然后向用户添加成员资格角色。我知道我需要添加搜索功能,但是现在我只是试图获得基本结果然后添加花哨的东西。
我想要的是可以在任何场景中使用的更通用的东西。怎么办呢。
希望任何人都可以给我一些灯光。提前谢谢。
此致