目前我们公司对离职人员的帐号管理通过下面的方式,离职流程中的最后一关是在在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数据库中取信息来更新用户信息。
http://sting.blog.51cto.com/1686695/328193 |