首页 > 代码库 > vbs程序批量禁用域用户然后移动到指定OU

vbs程序批量禁用域用户然后移动到指定OU

     作为一个大公司的IT管理人员,最痛苦的是每天创建、禁用、删除好几十个人员用户信息,目前我们通过程序批量创建域用户,但是离职用户的相关信息禁用及删除,需要我们手动来完成,之前文件介绍了,我们通过powershell来对指定的用户禁用及移动到指定的OU下,今天我们就通过vbs来实现将指定的用户禁用及移动到指定的OU。

     我们首先是需要查看运行环境,我们创建Dsgrd Object组织单元,然后在该组织单元下创建Domain users二级组织单元,然后创建测试用户。

image

我们要将用户禁用后,移动到指定的OU下:Disable Accounts

image

 

接下来我们编辑程序:

image

代码:

‘==========================================================================
‘
‘ VBScript Source File -- Created with SAPIEN Technologies PrimalScript 3.1
‘
‘ NAME: 
‘
‘ AUTHOR: Windows 用户 , 12345
‘ DATE  : 2014/10/29
‘
‘ COMMENT: 
‘
‘==========================================================================
strDisableAccount = True
ForReading=1
strNewParentDN = "OU=Disable Accounts"   ‘ move To 
strContainer = "OU=Dsgrd Object"  ‘ source
‘ ------ END CONFIGURATION ---------
‘ 开始运行功能
Set dic = CreateObject("Scripting.Dictionary")
Set  objRootDSE = GetObject("LDAP://rootDSE")
strDomainDN = objRootDSE.Get ("defaultNamingContext")  ‘ dong tai huo qu yu 
Set objContainer = GetObject ("LDAP://"&strContainer&"," & strDomainDN)
subContainer objContainer,strUserDN
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("D:\11.txt", ForReading)
While Not objFile.AtEndOfStream
    WScript.Echo VbCrLf
    strUserDN = trim(objFile.Readline)
    WScript.Echo strUserDN ‘& VbCrLf
If dic.exists(strUserDN) Then 
Set objCont = GetObject("LDAP://"&strNewParentDN&","& strDomainDN)‘
Set objUser = dic.item(strUserDN)
If objUser.AccountDisabled = True Then
‘ WScript.Echo "Account for " & objUser.Get("cn") & " currently disabled - Not moved"
 objCont.MoveHere "LDAP://"& objUser.distinguishedName,"CN="&strUserDN ‘vbNullString
Else
WScript.Echo "Account currently enabled"
objUser.AccountDisabled = True
objUser.SetInfo
 objCont.MoveHere "LDAP://"& objUser.distinguishedName,"CN="&strUserDN ‘vbNullString
 WScript.Echo "Account for " & objUser.Get("cn") & " moved to new OU"     
end If
End If
Wend
objFile.Close
Set objRootDSE = Nothing
Sub subContainer(objContainer,strUserDN)
For Each objUser In objContainer 
If RegExpTest("OU=.*",objUser.name) Then
‘ MsgBox objUser.name
subContainer objUser,strUserDN
Else 
dic.add objUser.sAMAccountName,objUser
‘ MsgBox  objUser.name &":"& objUser.AccountDisabled
End If 
Next
‘Set objContainer = Nothing
End Sub 
Function RegExpTest(patrn, strng)
  Dim regEx, retVal            ‘ 建立变量。
  Set regEx = New RegExp         ‘ 建立正则表达式。
  regEx.Pattern = patrn         ‘ 设置模式。
  regEx.IgnoreCase = False         ‘ 设置是否区分大小写。
  retVal = regEx.Test(strng)         ‘ 执行搜索测试。
  If retVal Then
    RegExpTest =True
  Else
    RegExpTest = False
  End If
End Function


我们设置需要禁用并且移动的账户信息:

image

然后我们运行程序进行查看:

image

程序执行后的效果:

image

本文出自 “高文龙” 博客,请务必保留此出处http://gaowenlong.blog.51cto.com/451336/1569616

vbs程序批量禁用域用户然后移动到指定OU