无法获取林中的所有目录条目
本文关键字:获取 林中 | 更新日期: 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 有问题。