Mysql同步ad域账号信息_C# AD(Active Directory)域信息同步,组织单位、用户等信息查询...

48304ba5e6f9fe08f3fa1abda7d326ab.png

private List list = new List();

#region## 同步

///

/// 功能:同步

/// 创建人:Wilson

/// 创建时间:2012-12-15

///

///

public void SyncAll(DirectoryEntry entryOU)

{

DirectorySearcher mySearcher = new DirectorySearcher(entryOU, "(objectclass=organizationalUnit)"); //查询组织单位

DirectoryEntry root = mySearcher.SearchRoot; //查找根OU

SyncRootOU(root);

StringBuilder sb = new StringBuilder();

sb.Append("\r\nID\t帐号\t类型\t父ID\r\n");

foreach (var item in list)

{

sb.AppendFormat("{0}\t{1}\t{2}\t{3}\r\n", item.Id, item.Name, item.TypeId, item.ParentId);

}

LogRecord.WriteLog(sb.ToString());

MessageBox.Show("同步成功", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);

Application.Exit();

}

#endregion

#region## 同步根组织单位

///

/// 功能: 同步根组织单位

/// 创建人:Wilson

/// 创建时间:2012-12-15

///

///

private void SyncRootOU(DirectoryEntry entry)

{

if (entry.Properties.Contains("ou") && entry.Properties.Contains("objectGUID"))

{

string rootOuName = entry.Properties["ou"][0].ToString();

byte[] bGUID = entry.Properties["objectGUID"][0] as byte[];

string id = BitConverter.ToString(bGUID);

list.Add(new AdModel(id, rootOuName, (int)TypeEnum.OU, "0"));

SyncSubOU(entry, id);

}

}

#endregion

#region## 同步下属组织单位及下属用户

///

/// 功能: 同步下属组织单位及下属用户

/// 创建人:Wilson

/// 创建时间:2012-12-15

///

///

///

private void SyncSubOU(DirectoryEntry entry, string parentId)

{

foreach (DirectoryEntry subEntry in entry.Children)

{

string entrySchemaClsName = subEntry.SchemaClassName;

string[] arr = subEntry.Name.Split('=');

string categoryStr = arr[0];

string nameStr = arr[1];

string id = string.Empty;

if (subEntry.Properties.Contains("objectGUID")) //SID

{

byte[] bGUID = subEntry.Properties["objectGUID"][0] as byte[];

id = BitConverter.ToString(bGUID);

}

bool isExist = list.Exists(d => d.Id == id);

switch (entrySchemaClsName)

{

case "organizationalUnit":

if (!isExist)

{

list.Add(new AdModel(id, nameStr, (int)TypeEnum.OU, parentId));

}

SyncSubOU(subEntry, id);

break;

case "user":

string accountName = string.Empty;

if (subEntry.Properties.Contains("samaccountName"))

{

accountName = subEntry.Properties["samaccountName"][0].ToString();

}

if (!isExist)

{

list.Add(new AdModel(id, accountName, (int)TypeEnum.USER, parentId));

}

break;

}

}

}

#endregion

48304ba5e6f9fe08f3fa1abda7d326ab.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值