给定一个 DirectoryEntry,我怎样才能得到 Forest 对象?
Given a DirectoryEntry, how can I get the Forest object?
假设我想实现一个扩展方法,允许我为每个 DirectoryEntry 对象获取 Forest 对象。
我的骨架代码:
public static Forest GetForest(DirectoryEntry de) {
string forestDnsName = //DoSomethingWith(de.Path); ?
DirectoryContext context = new DirectoryContext(DirectoryContextType.Forest, forestDnsName);
return Forest.GetForest(context)
}
但我不确定如何获得森林。有谁知道怎么弄吗?
没有示例代码,只有一些通用步骤:
- 获取 "distinguishedname" 属性。
- 从 DN
中获取 "DC=xxx,DC=yyy" 段
- 将以上转换为域名
(删除所有 "DC=",然后将“,”替换为“.”)
- 连接到 LDAP://[域名]/RootDSE
- 阅读"rootDomainNamingContext"
- 通过重复步骤 3 转换为林名称
- 您已经知道如何从林名称创建
Forest
对象
如果你会多次调用这个扩展方法,你可以建立一个域名到Forest
对象映射以减少AD流量(跳过步骤4 - 7)。
假设我想实现一个扩展方法,允许我为每个 DirectoryEntry 对象获取 Forest 对象。
我的骨架代码:
public static Forest GetForest(DirectoryEntry de) {
string forestDnsName = //DoSomethingWith(de.Path); ?
DirectoryContext context = new DirectoryContext(DirectoryContextType.Forest, forestDnsName);
return Forest.GetForest(context)
}
但我不确定如何获得森林。有谁知道怎么弄吗?
没有示例代码,只有一些通用步骤:
- 获取 "distinguishedname" 属性。
- 从 DN 中获取 "DC=xxx,DC=yyy" 段
- 将以上转换为域名 (删除所有 "DC=",然后将“,”替换为“.”)
- 连接到 LDAP://[域名]/RootDSE
- 阅读"rootDomainNamingContext"
- 通过重复步骤 3 转换为林名称
- 您已经知道如何从林名称创建
Forest
对象
如果你会多次调用这个扩展方法,你可以建立一个域名到Forest
对象映射以减少AD流量(跳过步骤4 - 7)。