从外部文件批量处理AD帐号属性

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


本文转自William宋 51CTO博客,原文链接:http://blog.51cto.com/sting/328193,如需转载请自行联系原作者
相关文章
|
数据安全/隐私保护 存储 Web App开发