'File: BulkCreateUsers.vbs
'Version: 1.0
'Author: Bennett Scharf http://www.bennett-scharf.com
'For: n/a
'Purpose: Quick & dirty user creation script. Parses tab separated text file containing user IDs & Full Names
'Creation Date: 22 March 05
'Revision Date: n/a
'Related Files: users.txt - input file
' cscript.exe -vbscript console command intrepreter part of standard OS install
'Operating System: Windows 2000 & later
'Usage: cscript BulkCreateUsers.vbs
'Exit codes: Normal exit: 0, Error Exit > 0
Option Explicit
Const User_OU = "OU=Some OU3,OU=Some OU2,dc=someOU,dc=SomeDomian,dc=com"
Const Group_OU = "OU=Some Groups OU,OU=Some OU2,dc=someOU,dc=SomeDomain,dc=com"
Const strInputFileName = "H:\Code\VBScript\adsi\users.txt"
Const strPassword "S0meStr0ngP@sssw0rd" 'initial user password
Const strGroup "SomeGroupName" 'The group we want to add these users to
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim strInput
Dim strUserInfo
'open the import file
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set f = fso.OpenTextFile(strInputFileName, ForReading, False)
If Err.Number <> 0 Then 'Trap file open errors and Exit
Wscript.echo Err.Description
Wscript.quit (Err.Number)
End If
On Error GoTo 0
Do While Not f.AtEndOfStream
strInput = f.ReadLine
strUserInfo = Split(strInput,vbTab,2, vbTextCompare)
WScript.Echo strUserInfo(0), strUserInfo(1)
MakeUser strUserInfo(0), strUserInfo(1)
WScript.Sleep 3000 'a pause to avoid race conditions
SetPassword strUserInfo(0), strPassword
EnableUser strUserInfo(0)
AddGroup strUserInfo(0), strGroup
Loop
'main routine ends here
Sub MakeUser(strUser, strDisplayName)
Set objOU = GetObject("LDAP://"& User_OU)
Set objUser = objOU.Create("User", "cn=" & strUser)
objUser.Put "sAMAccountName", strUser
objUser.Put "displayName", strDisplayName
objUser.Put "description", strDisplayName
objUser.SetInfo
Set objUser = Nothing
End Sub
Sub SetPassword (strUser, strPassword)
Set objUser = GetObject("LDAP://cn=" & strUser & "," & User_OU)
objUser.SetPassword strPassword
Set objUser = Nothing
End Sub
Sub SetPwexp (strUser)
Set objUser = GetObject("LDAP://cn=" & strUser & "," & User_OU)
objUser.Put "pwdLastSet", 0
objUser.setinfo
Set objUser = Nothing
End Sub
Sub AddGroup(strUser, strGroup)
Set objUser = GetObject("LDAP://cn=" & strUser & "," & User_OU)
Set objGroup = GetObject("LDAP://cn=" & strGroup & "," & Group_OU)
objGroup.Add objUser.ADSPath
Set objGroup = Nothing
Set objUser = Nothing
End Sub
Sub EnableUser(strUser)
Const ADS_UF_ACCOUNTDISABLE = 2
Set objUser = GetObject("LDAP://cn=" & strUser & "," & User_OU)
intUAC = objUser.Get("userAccountControl")
If intUAC And ADS_UF_ACCOUNTDISABLE Then
objUser.Put "userAccountControl", intUAC Xor ADS_UF_ACCOUNTDISABLE
objUser.SetInfo
End If
Set objUser = Nothing
End Sub