无法获取林中的所有目录条目

本文关键字:获取 林中 | 更新日期: 2023-09-27 18:37:20

我正在尝试获取森林中的所有目录条目。

我的代码片段如下所示:

DirectoryContext dc = new DirectoryContext(DirectoryContextType.DirectoryServer, "xx.x.xxx.40", "w28''administrator", "pwd");
Forest forest = Forest.GetForest(dc);
Console.WriteLine("Domain count in forest: " + forest.Domains.Count);
DomainCollection domains = forest.Domains;
foreach (Domain d in domains)
{
    Console.WriteLine(d.Name);
    //It doesn't work
    DirectoryEntry entry = d.GetDirectoryEntry();
    foreach (DirectoryEntry child in entry.Children)
    {
        Console.WriteLine(" - " + child.Name);
    }
}

但是,我得到一个例外:

System.DirectoryServices.ActiveDirectory.ActiveDirectoryOperationException: Unknown error (0x80005000) ---> System.Runtime.InteropServices.COMException (0x80005000): Unknown error (0x80005000)
   at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   at System.DirectoryServices.DirectoryEntry.Bind()
   at System.DirectoryServices.DirectoryEntry.get_AdsObject()
   at System.DirectoryServices.PropertyValueCollection.PopulateList()
   at System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName)
   at System.DirectoryServices.PropertyCollection.get_Item(String propertyName)
   at System.DirectoryServices.ActiveDirectory.PropertyManager.GetPropertyValue(DirectoryContext context, DirectoryEntry directoryEntry, String propertyName)
   --- End of inner exception stack trace ---
   at System.DirectoryServices.ActiveDirectory.PropertyManager.GetPropertyValue(DirectoryContext context, DirectoryEntry directoryEntry, String propertyName)
   at System.DirectoryServices.ActiveDirectory.DirectoryEntryManager.ExpandWellKnownDN(WellKnownDN dn)
   at System.DirectoryServices.ActiveDirectory.Domain.GetDirectoryEntry()

无法获取林中的所有目录条目

如果我的几个域控制器关闭并变得不可用,我遇到了同样的错误。

我已经改变了我获取域的目录条目实例的方式:

entry = new DirectoryEntry(string.Format("LDAP://{0}", d.Name), UserNameFull, password);

这工作正常,因为会引发错误"服务器无法运行",因此它会向用户指出其 DC 有问题。