Board logo

标题: [转贴] VBS脚本从外部文件批量处理AD帐号属性 [打印本页]

作者: VBScript    时间: 2012-4-6 22:42     标题: VBS脚本从外部文件批量处理AD帐号属性

目前我们公司对离职人员的帐号管理通过下面的方式,离职流程中的最后一关是在在HR部门打印离职单证明,在打印完离职证明后,HR系统自动将离职人员的AD帐号进行禁用,隔日HR系统导出离职报表给网管,进行删除。
其实目前公司完全可以做到在HR系统中设置直接删除离职人员,但因安全方面的考虑(如,HR mm操作失误,在职状态将调任误改为离职...),所以在最后删帐号时还是由网管人为去确认。下面是批量对AD帐号进行操作的方法。
如果一天的离职人员有很多,包括有帐号或没帐号的,网管是不可能一个个去删的。能过下面的代码,可以将所有离职人员的工号保存在一个文本文件中,执行脚本,并自动将离职人员移入一个特定的OU,如Dimission_Users。同时也可以对用户属性操作,如禁用帐号,在描述中添加 “Dimission"等信息。下面的代码供参考(将帐号保存到response.txt文件,与下面的脚本一个目录就可以):
  1. Set objou=GetObject("LDAP://ou=Dimission_Users,dc=contoso,dc=com")
  2. Set con = CreateObject("ADODB.Connection")
  3. Set com = CreateObject("ADODB.Command")
  4. con.Provider = "ADsDSOObject"  'this is the ADSI-OLEDB provider name
  5. con.Open "Active Directory Provider"
  6. Set Com.ActiveConnection = con
  7. com.Properties("Page Size")=1000
  8. Dim fs, f,i
  9. Set fs = CreateObject("Scripting.FileSystemObject")
  10. Set f = fs.OpenTextFile("response.txt")
  11. Do While f.AtEndOfStream <> True
  12. com.CommandText = "select name,samaccountname,adspath from 'LDAP://DC=contoso, DC=com' WHERE samAccountName=" & "'" & f.ReadLine & "'"
  13. Set rs = Com.Execute
  14. While Not rs.EOF
  15.     Set usr=GetObject(rs.fields("AdsPath"))
  16.   usr.accountdisabled= Not enable
  17.   usr.put "description","dimission"
  18.   'WScript.Echo usr.name
  19.   usr.setinfo
  20.   set newuser=objou.movehere(usr.adspath,vbnullstring)
  21.     WScript.Echo rs.Fields("Name"),rs.fields("samaccountname")
  22.   rs.MoveNext
  23. Wend
  24. Loop
  25. f.Close
复制代码


可以通过该脚本批量对AD对象进行操作,如部门,分机,公司...。也可以通过再加修改连接数据库,从HR数据库中取信息来更新用户信息。

http://sting.blog.51cto.com/1686695/328193




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2