gpt4 book ai didi

c# - 查询 PrincipalSearcher 是否包含多个字符串

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:39 29 4
gpt4 key购买 nike

我希望能够查询事件目录,给出包含某些词的所有组的列表,例如下面的用户或管理员,这是我到目前为止所得到的

PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
GroupPrincipal qbeGroup = new GroupPrincipal(ctx);
qbeGroup.DisplayName = "Administrators";
qbeGroup.DisplayName = "Users";
PrincipalSearcher srch = new PrincipalSearcher(qbeGroup);
return srch.FindAll().Select(g => g.Name).ToArray();

这段代码似乎甚至没有过滤掉不是管理员或用户的组名。但是无论如何我想不通的是如何查询组名是否包含?而不是如果组名等于以及如何对多个字符串执行此操作。

我可以使用 DirectoryEntry 做同样的事情,所以我把它放在这里以供引用

var groups = new List<string>();
var path = string.Format("LDAP://CN=Users,DC=company,DC=com");
var computerEntry = new DirectoryEntry(path);

if (computerEntry != null)
{
using (computerEntry)
{
var userNames =
from DirectoryEntry childEntry
in computerEntry.Children
where childEntry.SchemaClassName == "Group"
select childEntry.Name;
foreach (var name in userNames)
{
if (name.Contains("Administrators") || name.Contains("Users"))
{
groups.Add(name);
}
}
}
}
return groups.ToArray();

最佳答案

我是通过使用 foreach 循环来做到这一点的,但是下面的代码仍然没有回答我关于如何为 Principalsearcher 做这件事的问题

var groups = new List<string>();
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
GroupPrincipal qbeGroup = new GroupPrincipal(ctx);
PrincipalSearcher srch = new PrincipalSearcher(qbeGroup);
foreach (var group in srch.FindAll())
{
if (group.Name.Contains("Administrators") || group.Name.Contains("Users"))
{
groups.Add(group.Name);
}
}
return groups.ToArray();

关于c# - 查询 PrincipalSearcher 是否包含多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13012497/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com