Chinaunix首页 | 论坛 | 博客
  • 博客访问: 530187
  • 博文数量: 88
  • 博客积分: 2256
  • 博客等级: 大尉
  • 技术积分: 921
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-08 23:20
个人简介

积硅步,行千里

文章分类

全部博文(88)

文章存档

2019年(5)

2018年(1)

2016年(15)

2015年(23)

2013年(3)

2012年(6)

2011年(3)

2010年(22)

2009年(10)

我的朋友

分类: 系统运维

2016-09-09 11:26:38

  1. 需求:公司采用域环境管理,所有用户都绑定到只能登录到某一台电脑使用,只在会议室增加一台公用电脑,为了方便资源访问,让所有用户都可以登录这台电脑使用,如果一个一个用户这样添加登录到指定电脑,是可以实现的,但工作量相当的大,因为有用户好几百,或几K的时候就成问题了。
  2.    以下是通过参考微软官方技术支持文档改写的批处理,快速实现批量用户添加绑定到相应电脑登录。
  3. 运行环境:需在域服务器上以域管理员身份运行以下vbs批处理
  4. 1、批量添加,如把ou为:二级---行政部 里所有用户都开通可以使用计算机名为testpc的电脑
  5. strNewComputer = "testpc"
  6. Const ADS_SCOPE_SUBTREE = 2
  7. Const ADS_PROPERTY_UPDATE = 2

  8. Set objConnection = CreateObject("ADODB.Connection")
  9. Set objCommand = CreateObject("ADODB.Command")
  10. objConnection.Provider = "ADsDSOObject"
  11. objConnection.Open "Active Directory Provider"
  12. Set objCommand.ActiveConnection = objConnection

  13. objCommand.Properties("Page Size") = 1000
  14. objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

  15. objCommand.CommandText = _
  16.     "SELECT distinguishedName,userWorkstations FROM 'LDAP://ou=行政部,ou=二级,dc=domain,dc=com' WHERE objectCategory='user'"
  17. Set objRecordSet = objCommand.Execute

  18. objRecordSet.MoveFirst
  19. Do Until objRecordSet.EOF
  20.     strUserWS = objRecordSet.Fields("userWorkstations").Value
  21.     strDN = objRecordSet.Fields("distinguishedName").Value
  22.     Set objUser = GetObject("LDAP://" & strDN)
  23.     If strUserWS <> "" And InStr(strUserWS,strNewComputer) = 0 Then
  24.             strTemp = strUserWS & "," & strNewComputer
  25.             objUser.Put "userWorkstations",strTemp
  26.             objUser.SetInfo
  27.     End If
  28.     objRecordSet.MoveNext
  29. Loop
  30. 把上述脚本保存为add.vbs ,以域管理员权限在域服务器上执行即可。


  31. 2、批量删除,如撤销上述操作:

  32. strNewComputer = "ks-it001"
  33. Const ADS_SCOPE_SUBTREE = 2
  34. Const ADS_PROPERTY_UPDATE = 2

  35. Set objConnection = CreateObject("ADODB.Connection")
  36. Set objCommand = CreateObject("ADODB.Command")
  37. objConnection.Provider = "ADsDSOObject"
  38. objConnection.Open "Active Directory Provider"
  39. Set objCommand.ActiveConnection = objConnection

  40. objCommand.Properties("Page Size") = 1000
  41. objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

  42. objCommand.CommandText = _
  43.     "SELECT distinguishedName,userWorkstations FROM 'LDAP://ou=行政部,ou=二级,dc=domain,dc=com' WHERE objectCategory='user'"
  44. Set objRecordSet = objCommand.Execute
  45. //备注:这个ou是从后面往前面进行一级二级进行书写的,这里不要搞错。

  46. objRecordSet.MoveFirst
  47. Do Until objRecordSet.EOF
  48.     strUserWS = objRecordSet.Fields("userWorkstations").Value
  49.     strDN = objRecordSet.Fields("distinguishedName").Value
  50.     Set objUser = GetObject("LDAP://" & strDN)
  51.     If InStr(strUserWS,strNewComputer) <> 0 Then
  52.             strTemp = Replace(strUserWS,"," & strNewComputer,"")
  53.             objUser.Put "userWorkstations",strTemp
  54.             objUser.SetInfo
  55.     End If
  56.     objRecordSet.MoveNext
  57. Loop
  58. 把上述脚本保存为delete.vbs ,以域管理员权限在域服务器上执行即可。
  59. 这个脚本适用于没有安装powershell或不会powershell下批量指定计算机登录的人员使用,下次再弄个powershell环境下批量指定用户计算机登录。
  60. 注:1、红色字体为根据用户实际环境修改;
  61.   2、上述操作不影响原来已经添加有的计算机;
  62.    3、由于实际环境的差异,请测试后再在生产环境下使用!


阅读(1565) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~