作为一个大公司的IT经理,最痛苦的事情就是每天创建、禁用、删除几十条人员和用户信息。目前我们通过程序批量创建域用户,但是离职用户的相关信息需要手动禁用和删除。前面的文档介绍了我们通过powershell禁用并移动指定的用户到指定的OU。今天,我们通过vbs禁用并移动指定的用户到指定的OU。
首先,我们需要检查运行环境。我们创建Dsgrd对象组织单元,然后在该组织单元下创建域用户辅助组织单元,然后创建测试用户。
禁用用户后,我们将其移动到指定的OU:DisableAss="superseo">ss="superseo">ccounts。
接下来我们编辑程序:
代码:
'========================================================================== ' ' 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我们设置需要禁用和移动的帐户信息:
然后我们运行程序来检查:
程序执行后的效果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)