Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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用户及其关联计算机_C#_Active Directory - Fatal编程技术网

C# 加载active directory用户及其关联计算机

C# 加载active directory用户及其关联计算机,c#,active-directory,C#,Active Directory,大家好,我正在尝试开发一个程序,该程序将列出Active Directory的所有用户,当我选择一个用户时,该程序应该能够显示与该用户关联的计算机。i、 e该广告用户可以访问的计算机。 我已经编写了列出所有用户的代码,但不知道如何列出与该用户关联的计算机。 以下是我将AD用户加载到datatable中的代码: DataTable dtUser= new DataTable(); try { DirectoryEntry dom = Doma

大家好,我正在尝试开发一个程序,该程序将列出Active Directory的所有用户,当我选择一个用户时,该程序应该能够显示与该用户关联的计算机。i、 e该广告用户可以访问的计算机。 我已经编写了列出所有用户的代码,但不知道如何列出与该用户关联的计算机。 以下是我将AD用户加载到datatable中的代码:

DataTable dtUser= new DataTable();
    try
    {            
        DirectoryEntry dom = Domain.GetComputerDomain().GetDirectoryEntry();

        DirectorySearcher dsAllUsers = new DirectorySearcher(dom);
        dsAllUsers.SearchScope = SearchScope.Subtree;
        dsAllUsers.Filter = "(objectCategory=Person)";

        SearchResultCollection result = dsAllUsers.FindAll();
        dtUser.Columns.Add("CustodianName");
        dtUser.Columns.Add("Email");
        dtUser.Columns.Add("Title");
        dtUser.Columns.Add("Dept.");           

        foreach (SearchResult rs in result)
        {
            DataRow newRow = dtUser.NewRow();

            if (rs.GetDirectoryEntry().Properties["samaccountname"].Value != null)
                newRow["CustodianName"] = rs.GetDirectoryEntry().Properties["samaccountname"].Value.ToString();

            if (rs.GetDirectoryEntry().Properties["mail"].Value != null)
                newRow["Email"] = rs.GetDirectoryEntry().Properties["mail"].Value.ToString();

            if (rs.GetDirectoryEntry().Properties["title"].Value != null)
                    newRow["Title"] = rs.GetDirectoryEntry().Properties["title"].Value.ToString();

            if (rs.GetDirectoryEntry().Properties["department"].Value != null)
                newRow["Dept."] = rs.GetDirectoryEntry().Properties["department"].Value.ToString();

            dtUser.Rows.Add(newRow);
        }
        return dtUser;
    }
    catch (Exception)
    {
        throw;
    }

我不相信标准LDAP/Active Directory有这样的功能

计算机只是另一类AD对象——但用户和一台或多台计算机之间没有链接——计算机类上没有“归属”属性,用户上也没有“计算机”集合


如果您的组织实施了对默认AD模式的扩展,这是完全可能的!,这是一个自定义解决方案,然后您必须知道它是什么!:-

我不相信标准LDAP/Active Directory有这样的功能。计算机只是另一类广告对象,但用户和一台或多台计算机之间没有链接。如果您已经实现了这一点,那么它必须是LDAP计算机类上的一个自定义属性——如果它是自定义的,那么您必须知道它是什么!谢谢@marc_。但在我看来,如果我应该找到用户的组/成员并找到与该组/成员相关的计算机,那么我认为一定有办法。有可能吗?正如我所说的-没有,我认为标准LDAP/AD中没有任何属性可以将用户/组链接/连接到计算机。因此,您的意思是:-没有办法知道与ADNo的特定用户关联的计算机,没有。计算机没有分配给用户,没有belongsTo属性或类似的东西。计算机在AD中是独立的对象。任何连接用户和计算机的东西都可能是您的组织所做的,但它在AD中没有表示。