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

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

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

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

 

接下来我们编辑程序:

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
'==========================================================================
'
' 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


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

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

程序执行后的效果:



本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1569616,如需转载请自行联系原作者

你可能感兴趣的:(vbs程序批量禁用域用户然后移动到指定OU)