繁体   English   中英

尝试从AD中的计算机对象中提取“ ManagedBy”属性

[英]Trying to pull 'ManagedBy' property from Computer object in AD

我在这里到那里都找到了一些示例,但是似乎找不到能够解决从计算机记录中检索Managedby属性的示例。 (我不知道用户名,但它存储在Managedby中)

DirectoryEntry searchRoot = new DirectoryEntry("LDAP://"+lblDomain.Text);
DirectorySearcher search = new DirectorySearcher(searchRoot);

search.Filter = ("(objectClass=computer)");
search.PropertiesToLoad.Add("managedBy");
search.PropertiesToLoad.Add("distinguishedName");
search.PropertiesToLoad.Add("cn");

SearchResultCollection groups = search.FindAll();

foreach (SearchResult sr in groups)
{
    if (sr.Properties.Contains("managedby"))
    {
        lblManagedBy.Text=(sr.Properties["managedBy"][0].ToString());
    }
    else
    {
        lblManagedBy.Text = "No owner specified in ManagedBy";
    }
}

您的示例对我来说效果很好,因此需要检查一些内容。

1)lblDomain.Text中的域名正确吗? 您能否提供一个示例,说明其用途? 假名称可以。 2)您实际上是否拥有设置了“管理者”的计算机帐户? 默认情况下为空。

除此之外,我使用了确切的代码,并获取了我分配给计算机帐户的用户的DN,所以这可能与您的连接方式有关。

search.Filter = "(&(objectClass=computer)(cn=pcname))";
 DirectoryEntry searchRoot = new DirectoryEntry("LDAP://"+lblDomain.Text);

 DirectorySearcher search = new DirectorySearcher(searchRoot);

 search.Filter = "(&(objectClass=computer)(name=" + host + "))";

 search.PropertiesToLoad.Add("managedBy");
 search.PropertiesToLoad.Add("distinguishedName");
 search.PropertiesToLoad.Add("cn");

 SearchResultCollection groups = search.FindAll();


 foreach (SearchResult sr in groups)
 {
  if (sr.Properties["managedBy"].Count > 0)
  {
      lblManagedBy.Text=(sr.Properties["managedBy"][0].ToString());
  }
  else
  {
     lblManagedBy.Text = "No owner specified in ManagedBy";
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM