Import users to ad from csv file
hi there ,
i need help with this. i have a lot of csv file with users that needs to be created on AD. Not sure what the commands will be.
the csv file format is as follows
user name, firstname, lastname, password , company,ou
What do i use to import this info. Have treid csvde but i dont know how.
Any help would be greatly appreciated
thanks
Chris van Dyk
August 30th, 2011 2:41am
Have you tried to use CSVDE on a DC or workstation with Administrative Tools / RSAT installed with these switches ?
csvde -i -f <filename.csv>
-i means import mode
-f means read from file specified after a switch
One important information. CSVDE cannot alter/modify existing account. So, all of them cannot be present withijn AD database. CSVDE also cannot set up initial password for users. You have to do after import by yourself (i.e. using DC Tools to set initial
password)Regards, Krzysztof Visit my blog at http://kpytko.wordpress.com
Free Windows Admin Tool Kit Click here and download it now
August 30th, 2011 2:56am
You need some script for adding user from csv ,and it's easy you can add every parameter you want.
So hire is example and it's work:
It put in DGDO Organization unit you need to change that and every parameter you don't like you need just to delete from two place in script or put some new parameter
https://skydrive.live.com/?cid=660f69119a9a474a&sc=documents&uc=2&id=660F69119A9A474A%21209#
And run script from power shell because is .ps1 file
August 30th, 2011 3:12am
I have played some time with various tools and find, that the simplest way is visual basic script, because of plenty of scripts that solve partial tasks and because of creating visual basic script has been fast procedure to set the working script. Today
I would prefere PS, but if you need fast solution now, then adapting the following script may be the fastest way:
'****************************************************************
OPTION EXPLICIT
'****************************************************************
' Definition of variables
'****************************************************************
Dim strFileName, strNextLine
Dim objFSO, objTextFile, objScriptExec, objShell
Dim arrUserLine
Dim strSamID,strFn,strLn,strPWD,strEmplID
Dim strGrpID,strCategory,strComeIn,strAccExpir
Dim strSuffix0,strSuffix, strDN, strFunction,strExProfile
Dim objWMI,objUsers,strComputer,strCount,strCount1,strExpDate
Dim strUsrGrp,strEndUser
'*****************************************************************
' Definice konstant
'*****************************************************************
Const ForReading = 1 ' For reading only
strFileName = "g:\in\nt336.txt" ' Imput data file
strSuffix0 = "dc=nt,dc=fel" ' Domain
Const Sleep_a_bit = 35 ' Sleeping interval
strComputer = "." ' "." means this server
strCount = 0
strCount1 = 0
strExpDate = "09/30/2015"
strEndUser = "zzzzzzzz"
'******************************************************************
' Definition of object file
'******************************************************************
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(strFileName ,ForReading)
'******************************************************************
' Definition of shellu
'******************************************************************
Set objShell = CreateObject("Wscript.Shell")
'******************************************************************
' Do cycle for reading input file
'******************************************************************
Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline
arrUserLine = Split(strNextLine,",")
strExProfile = 0
strSamID = arrUserLine(0) ' SamAccountName (required)
strLn = arrUserLine(1) ' Surname
strFn = arrUserLine(2) ' Given Name
strPWD = arrUserLine(3) ' Heslo
strEmplID = arrUserLine(4) ' User ID 4 UNIX
strGrpID = arrUserLine(5) ' Group ID 4 UNIX
strCategory = arrUserLine(6) ' Category (student, teacher,...)
strComeIn = arrUserLine(7) ' Date of input
' strAccExpir = arrUserLine(8) ' Date of expiration
strAccExpir = strExpDate
' ******************************************************************
' Is it the ending user (special name defined at the beginning)
' ******************************************************************
If strSamID = strEndUser Then
' Wscript.Echo "KONEC"
Exit Do
End If
'*******************************************************************
strExProfile = 1
' strExProfile = 0 ' No profile created on server
'*******************************************************************
SELECT CASE strCategory
CASE "zam"
strSuffix = "ou=employees,ou=people," & strSuffix0
strUsrGrp = "cn=ggEmployees,ou=Groups," & strSuffix0
CASE "stud"
strSuffix = "ou=students,ou=people," & strSuffix0
strUsrGrp = "cn=ggStudents,ou=Groups," & strSuffix0
CASE "other"
strSuffix = "ou=other,ou=people," & strSuffix0
strUsrGrp = "cn=ggOther,ou=Groups," & strSuffix0
CASE "dokt"
strSuffix = "ou=phd-students,ou=people," & strSuffix0
strUsrGrp = "cn=ggPHD,ou=Groups," & strSuffix0
CASE "u3v"
strSuffix = "ou=u3v,ou=people," & strSuffix0
strUsrGrp = "cn=ggU3V,ou=Groups," & strSuffix0
CASE ELSE
strSuffix = "ou=misc,ou=people," & strSuffix0
strUsrGrp = "cn=ggMisc,ou=Groups," & strSuffix0
END SELECT
'
'******************************************************************************
' Does the user exists?
'******************************************************************************
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\directory\LDAP")
Set objUsers = _
objWMI.ExecQuery("SELECT * FROM ds_user where ds_sAMAccountName = '"& strSamID &"' ")
if objUsers.Count = 0 then
' Wscript.Echo "No matching objects found"
Call AddUser(strSamID,strSuffix,strFn,strLn,strPWD,strAccExpir,strExProfile)
Call AddUsr2Grp(strSamID,strFn,strLn,strSuffix,strUsrGrp)
strcount1 = strCount1 + 1
else
' Wscript.Echo "User is IN"
strcount = strCount + 1
end if
Set objWMI = Nothing
Set objUsers = Nothing
Wscript.Sleep Sleep_a_bit
LOOP
' Wscript.Echo strCount
' Wscript.Echo strCount1
'*****************************************************************************
' Subroutine
'*****************************************************************************
Sub AddUser(strSamID,strSuffix,strFn,strLn,strPWD,strAccExpir,strExProfile)
Const vbMinimizedNoFocus = 6
'**********************************************************************
' Definice konstant pro subroutinu
'**********************************************************************
Const UF_SCRIPT = &H1
Const UF_ACCOUNTDISABLE = &H2
Const UF_HOMEDIR_REQUIRED = &H8
Const UF_LOCKOUT = &H10
Const UF_PASSWD_NOTREQD = &H20
Const UF_PASSWORD_CANT_CHANGE = &H40
Const UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = &H80
Const UF_DONT_EXPIRE_PASSWD = &H10000
Const UF_MNS_LOGON_ACCOUNT = &H20000
Const UF_SMARTCARD_REQUIRED = &H40000
Const UF_TRUSTED_FOR_DELEGATION = &H80000
Const UF_NOT_DELEGATED = &H100000
Const ADS_PROPERTY_UPDATE = 2
Dim objDomain, objUser, fso, intUserFlags, intNewUserFlags
Dim fldUserHomedir, wshShell
'Dim strSamID,strSuffix,strFn,strLn,strPWD,strAccExpir
Set objDomain = GetObject("LDAP://" & strSuffix)
Set objUser = objDomain.Create("user","cn=" & strSamID)
objUser.Put "sAMAccountName", strSamID
objUser.Put "userPrincipalName", strSamID & "@nt.fel"
'**********************************************************************
' Set information
'**********************************************************************
objUser.SetInfo
objUser.GetInfo
'**********************************************************************200
' Set of variables
'**********************************************************************
objUser.AccountDisabled = False
objUser.AccountExpirationDate = strAccExpir
'objUser.Description = "My description goes here!"
objUser.IsAccountLocked = False
'objUser.LoginScript = "login.vbs”
IF CBool(strExProfile) THEN _
objUser.Profile = "\\sa1.nt.fel\profile$\"& strSamID
'objUser.PasswordRequired = True
objUser.FirstName = strFn
objUser.LastName = strLn
objUser.DisplayName = strLn & " " & strFN
'**********************************************************************
' Home directory mapping
'**********************************************************************
objUser.HomeDirectory = "\\sa1.nt.fel\home\" & strSamID
objUser.Put "homeDrive", "H:"
'**********************************************************************
' Set information
'**********************************************************************
objUser.SetInfo
objUser.GetInfo
'**********************************************************************
' Password never expired
'**********************************************************************
intUserFlags = objUser.Get("userAccountControl")
intNewUserFlags = intUserFlags Or UF_DONT_EXPIRE_PASSWD
intNewUserFlags = intNewUserFlags Or UF_PASSWORD_CANT_CHANGE
objUser.Put "userAccountControl", intNewUserFlags
objUser.SetInfo
'**********************************************************************
'Create the home directory
'**********************************************************************
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists("e:\home\" & strSamID ) Then
Set fldUserHomedir = fso.CreateFolder("e:\home\" _
& strSamID)
End If
'**********************************************************************
' FULL in home directory
'**********************************************************************
Set wshShell = WScript.CreateObject("Wscript.Shell")
wshShell.Run "cacls.exe e:\home\" & strSamID & " /E /T /G " _
& strSamId & ":F", vbMinimizedNoFocus, True
'**********************************************************************
' Set password
'**********************************************************************
objUser.SetPassword strPWD
End Sub
'**********************************************************************
' Subroutine - Add user into group
'**********************************************************************
Sub AddUsr2Grp(strSamID,strFn,strLn,strSuffix,strUsrGrp)
Dim objGroup,strTest
Const ADS_PROPERTY_APPEND = 3
Set objGroup = GetObject("LDAP://" & strUsrGrp)
objGroup.PutEx ADS_PROPERTY_APPEND, "member", _
Array("CN=" & strSamID & "," & strSuffix)
objGroup.SetInfo
End Sub
Free Windows Admin Tool Kit Click here and download it now
August 30th, 2011 3:22am
Hi Everyone,
thanks for you response!
I got the users created with a bat file and dsadd command.
dsadd user cn=,ou=userou,ou=Users,dc=domain,dc=co,dc=za -upn @domain.co.za -display "" -pwd
-mustchpwd no -fn "" -ln "" -company ""
We created a excel sheet the auto fills in all the fileds. all i did wat to copy and paste all the user names , surenames and passwords . save the result in to a bat file and run it on the server.
Let me know it you guys would like the excel sheet.
Thanks
Chris van Dyk
August 30th, 2011 7:31am