从外部文件批量处理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,如需转载请自行联系原作者
相关文章
|
2月前
|
数据采集 BI 数据安全/隐私保护
润乾填报表利用外部参数进行权限控制
填报表可完成数据录入、补录等的数据采集工作,但其过程中还包括很多细节的功能,比如数据校验、使用编辑控件等。另外比较重要的一点则是权限控制,毕竟不能任何人访问同一个填报表都可随意编辑、所有内容都可见等,且往往这些权限控制的参数均来自外部,比如系统的会话变量 或者 报表 url 中带来的外部参数。
|
存储 NoSQL Java
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 下
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 下
206 0
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能   下
|
存储 缓存 NoSQL
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 上
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 上
165 0
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能   上
|
数据安全/隐私保护 存储 Web App开发