Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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# 在Active Directory中,如何查找所有组I';我是运输局局长?_C#_Active Directory - Fatal编程技术网

C# 在Active Directory中,如何查找所有组I';我是运输局局长?

C# 在Active Directory中,如何查找所有组I';我是运输局局长?,c#,active-directory,C#,Active Directory,我们使用Active Directory的secretary属性,这是一个多值DN属性。我想高效地找到给定用户是列出的秘书的所有组。在C#/.NET中执行此查询的最佳方式是什么?此代码将返回上下文的OU中的组的SAMAccountName列表,其中包括DiscrimizedName,作为列出的秘书之一: var filter = "(&(objectClass=group)(secretary=" + distinguishedName + "))"; PrincipalContext

我们使用Active Directory的
secretary
属性,这是一个多值DN属性。我想高效地找到给定用户是列出的
秘书的所有组。在C#/.NET中执行此查询的最佳方式是什么?

此代码将返回
上下文
的OU中的组的SAMAccountName列表,其中包括
DiscrimizedName
,作为列出的秘书之一:

var filter = "(&(objectClass=group)(secretary=" + distinguishedName + "))";

PrincipalContext context = new PrincipalContext(...); // place to search from
var up = new GroupPrincipal(context);
var list = new List<string>();
using (var searcher = new PrincipalSearcher(up))
{
    var ds = searcher.GetUnderlyingSearcher() as DirectorySearcher;

    // if you only want to search in a single OU (as defined by 'context')
    ds.SearchScope = SearchScope.OneLevel; 
    ds.Filter = filter;
    ds.PropertiesToLoad.Add("sAMAccountName");

    var results = ds.FindAll();
    foreach (SearchResult r in results)
    {
        var name = r.GetDirectoryEntry().Properties["sAMAccountName"].Value as string;
        list.Add(name);
    }
}
var filter=“(&(objectClass=group)(secretary=“+discrimitedName+”)”;
PrincipalContext上下文=新PrincipalContext(…);//搜索地点
var up=新的组主体(上下文);
var list=新列表();
使用(var搜索器=新的PrincipalSearcher(up))
{
var ds=searcher.getUnderlineSearcher()作为DirectorySearcher;
//如果只想在单个OU中搜索(由“上下文”定义)
ds.SearchScope=SearchScope.OneLevel;
ds.Filter=过滤器;
ds.PropertiesToLoad.Add(“sAMAccountName”);
var results=ds.FindAll();
foreach(结果中的搜索结果r)
{
var name=r.GetDirectoryEntry().Properties[“sAMAccountName”]。值为字符串;
列表。添加(名称);
}
}

在谷歌上搜索如何使用active directory或PrincipalContext访问组
请显示更多努力。。我做了很多谷歌搜索,因为我没有以一种相对简单的方式找到它,所以我把它贴在这里。最终我会找到答案,为后代回答我自己的问题,除非有人先写。不要认为否决票是有道理的。另外,我相信当你不得不进行一些不太常见的搜索时,有很多关于有效查询Active Directory方法的错误信息,因此我认为这个问题是有益的。