构造AD组织结构(Organizational Unit)的树形结构的另一个方法

本文介绍了不同于递归方式的一种构造Active Directory(AD)Organizational Unit(OU)树形结构的新方法。通过一次性查询所有OU,利用其distinguishedName转化为相对路径,并构建为XML XPath,进而生成XML并递归构造OU树。这种方法还适用于OU结构的数据导出,方便AD与其他系统的数据交换。
摘要由CSDN通过智能技术生成

这是构造AD组织结构(Organizational Unit,以下称为OU)的树形结构的另一个方法。之前的方法请参见:递归构造AD组织结构(Organizational Unit)的树形结构
需要引用两个dll:

using System.DirectoryServices;  
using System.DirectoryServices.ActiveDirectory; 

定义一个树节点类:

    public class OuTreeNode
    {
        public string Name { get; set; }
        public string Id { get; set; }
        private List<OuTreeNode> _children = new List<OuTreeNode>();

        public List<OuTreeNode> Children
        {
            get { return _children; }
            set { _children = value; }
        }
    }
这个类的名字是OuTreeNode,其中保存OU节点的基本信息,这里定义了OU的name,id,和子节点的列表。

与之前递归查找OU的方法不同,这个方法使用查询,一次查询出所有的OU,然后遍历这些OU就可以构造出一棵组织结构树。基本的思路是,利用OU对象的distinguishedName构造出一个OU相对于根节点的相对路径,这个路径正好可以作为一个xml表的xpath,根据这个xpath,就可以构造一个xml,最后通过xml表递归构造OU树。这是对xml查询的反向应用,一般都是给定一个xml表,使用xpath查询其中的节点,这次是使用xpath,构造一个xml表。

首先我们需要一个方法,将一个OU的distinguishedName转换成相对路径:

        private static string FormatDNToRelativePath(string rawDn)
        {
            StringBuilder path = new StringBuilder();
            rawDn = rawDn.Replace(" ", "_").Replace("&", "_");
            strin
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值