gpt4 book ai didi

c# - 在事件目录中查找计算机

转载 作者:行者123 更新时间:2023-11-30 14:31:23 29 4
gpt4 key购买 nike

当我使用 dsa.msc 手动搜索计算机并打开其属性时,有一个“位置”选项卡。它可能有值(value)也可能没有值(value)。当我尝试使用 .Net 的目录服务获取此信息时,我没有看到“位置”属性。我打印了所有可用的属性,但没有看到。它只是不可用还是我遗漏了什么?这是部分代码:

string sADPath = "LDAP://blah.blah.com";
DirectoryEntry de = new DirectoryEntry(sADPath);

string sFilter = "(&(objectCategory=computer)(name=" + sComputerName + "))";
DirectorySearcher DirectorySearch = new DirectorySearcher(de, sFilter);
SearchResult DirectorySearchResult = DirectorySearch.FindOne();

if (null != DirectorySearchResult)
{
DirectoryEntry deComp = DirectorySearchResult.GetDirectoryEntry();
oComputer.CN = deComp.Properties["cn"].Value.ToString();
....
}

编辑:

我误解了要求!它不是我需要的计算机的“物理”位置,而是它在 AD 层次结构中的位置。似乎应该位于“abc.org --> A --> B”中的计算机不存在,而是位于“abc.org --> A --> C --> D”中。我需要的是能够找到给定计算机名称的路径“abc.org --> A --> C --> D”。

最佳答案

属性名称是“位置”。与所有 AD 属性一样,如果它没有值,您将不会在搜索结果对象上看到它。我修改了您的代码,以便它可以在我的机器上运行。

如果您只是检索数据而不打算进行任何更改,则不需要调用 GetDirectoryEntry(这将强加到服务器的另一次往返)。请注意语法上的细微差别:

var rootDSE = new DirectoryEntry("LDAP://RootDSE");
var defaultNamingContext = rootDSE.Properties["defaultNamingContext"].Value.ToString();
var domainRootADsPath = String.Format("LDAP://{0}", defaultNamingContext);
var searchRoot = new DirectoryEntry(domainRootADsPath);

var filter = "(&(objectCategory=computer)(name=" + computerName + "))";
var directorySearch = new DirectorySearcher(searchRoot, filter);
var directorySearchResult = directorySearch.FindOne();

if (null != directorySearchResult)
{
Console.WriteLine(directorySearchResult.Properties["cn"][0].ToString());
if (directorySearchResult.Properties["location"].Count > 0)
{
Console.WriteLine(directorySearchResult.Properties["location"][0].ToString());
}

//It's not necessary to run GetDirectoryEntry unless you want to make a change
DirectoryEntry deComp = directorySearchResult.GetDirectoryEntry();
Console.WriteLine(deComp.Properties["cn"].Value.ToString());
if (deComp.Properties["location"].Value != null)
{
Console.WriteLine(deComp.Properties["location"].Value.ToString());
}
}

关于c# - 在事件目录中查找计算机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20289306/

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