欢迎光临
我们一直在努力

使用C#批量修改域帐户信息-.NET教程,C#语言

建站超值云服务器,限时71元/月

公司的组织结构经常发生变化,而我们的域帐户信息(ad)是和真实的组织机构相对应的。组织机构变化了,我们自然要改动相应的域帐户信息啦。这是一件很痛苦的事情,原因是什么,大家都明白。那么能不能用程序来解决这个问题呢?(windows2003的管理工具好像已经支持批量修改域帐户信息了)。

我创建了一个windows应用程序来解决:

在form上放置了六个combobox用于选择公司的ou(可以选择五级ou,如果你喜欢可以用treeview更好些)。

加载form的时候初始化这些combobox:

private void form1_load(object sender, system.eventargs e)

{

//初始化公司选择框

directoryentry de1=new directoryentry();

de1.path="ldap://dc=test,dc=net";

try

{

//所有ou(第一级)

foreach (directoryentry ch1 in de1.children)

{

str=ch1.name.tostring();

string str1="";

//str1=str.substring(0,str.indexof("="));

str1=ch1.schemaclassname.tostring();

if (str1=="organizationalunit")

{

//listbox1.items.add(ch1.name.tostring());

//加入第一个combobox

combobox1.items.add(ch1.name.tostring());

//

combobox3.items.add(ch1.name.tostring());

}

}

de1.close();

//textbox1.text=textbox1.text+"————–next————————\r\n";

//

messagebox.show("finish!!!");

}

catch(exception ex)

{

strerr=ex.message;

}

finally

{}

}

在初始化form的时候在第一个combobox中显示出所有的第一层ou。然后,在选择了这个combobox的时候,在第二个combobox中显示下一级ou:

private void combobox1_selectedindexchanged(object sender, system.eventargs e)

{

//str=listbox1.selecteditem.tostring();

str=combobox1.selecteditem.tostring();

directoryentry de1=new directoryentry();

de1.path="ldap://"+str+",dc=test,dc=net";

try

{

combobox2.items.clear();

combobox2.text="";

combobox2.refresh();

foreach (directoryentry ch1 in de1.children)

{

//

textbox1.text=textbox1.text+str+"\r\n";//ch.properties["adpath"][0].tostring();

string str1="";

str1=ch1.schemaclassname.tostring();

if (str1=="organizationalunit")

{

combobox2.items.add(ch1.name.tostring());

}

}

de1.close();

//textbox1.text=textbox1.text+"————–next————————\r\n";

//

messagebox.show("finish!!!");

}

catch(exception ex)

{

messagebox.show(ex.message);

}

finally

{}

}

依次在下一个combobox中显示下一级ou。选择好要修改的ou下后,就可以修改该ou下所有的信息了。这里以修改部门名称为例。

使用一个textbox输入部门名称,放一个按钮触发修改动作:

private void button1_click(object sender, system.eventargs e)

{

string stradroot="";

string strname="";

//str中保存的是ou的adpath的一部分,即通过选择combobox产生的字符串,类似于ou=imd,ou=company

stradroot="ldap://"+str+",dc=test,dc=net";

directoryentry de=new directoryentry();

de.path=stradroot;

//修改所有的user对象

foreach(directoryentry chm in de.children)

{

string strtype="";

strtype=chm.schemaclassname.tostring();

if(strtype.toupper()=="user")

{

strname=chm.name.tostring();

//判断是否属性值是否为空

if(chm.properties.contains("department"))

{

chm.properties["department"][0]=textbox2.text.tostring();

chm.commitchanges();

textbox3.text=textbox3.text+chm.name .tostring()+"的部门名称修改成功!\r\n";

}

else

{

chm.properties["department"].add(textbox2.text.tostring());

chm.commitchanges();

//textbox3.text=textbox3.text+ch1.name .tostring()+"\r\n";

textbox3.text=textbox3.text+chm.name .tostring()+"的部门名称添加成功!\r\n";

}

}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 使用C#批量修改域帐户信息-.NET教程,C#语言
分享到: 更多 (0)