作为一个大公司的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,如需转载请自行联系原作者