How can i import a set of users into an Active Directory organizational unit (the only one my user has access to). I want to be able to import the users and passwords from a CSV or Excel开发者_开发知识库 file as well as setting the account and password not to expire.
Can it be done?
If you can use PowerShell here is the begining of a script :
# Imput of the password
$defMDP = Read-Host "Entrez le mot de passe par défaut : " #-asSecureString
$utilisateurs = Import-csv c:\pgdvlp\MesUtilisateurs.csv
foreach ($utilisateur in $utilisateurs)
{
# Create an AD connexion
$urlLDAP = "LDAP://"+ $utilisateur.silLDAPA + "/" + $utilisateur.silOU + "," + $utilisateur.silLDAPB
$objOUCreation = [ADSI] $urlLDAP
# Create the user object
$strUtilisateur = $utilisateur.silPrenom + " " + $utilisateur.silNom
$objUtilisateur = $objOUCreation.create("inetOrgPerson", "cn=" + $strUtilisateur)
$objUtilisateur.SetInfo()
# Put the account parameters
$strLogin = $utilisateur.silPrenom[0] + $utilisateur.silNom
$objUtilisateur.samaccountname = $strLogin
$objUtilisateur.givenName = $utilisateur.silPrenom
$objUtilisateur.sn = $utilisateur.silNom
$objUtilisateur.displayName = $utilisateur.silPrenom + " " + $utilisateur.silNom
$objUtilisateur.userPrincipalName = $strLogin + "@" + $utilisateur.silDomaine
$objUtilisateur.company = $utilisateur.silSociete
$objUtilisateur.department = $utilisateur.silDepartment
$objUtilisateur.title = $utilisateur.silTitre
$objUtilisateur.mail = $utilisateur.silAddresseMail
$objUtilisateur.telephoneNumber = $utilisateur.silNumTel
# put the de password
$objUtilisateur.SetPassword($defMDP)
$objUtilisateur.pwdLastSet = 0
# put the account state
$objUtilisateur.userAccountControl = $utilisateur.silEtatCompte
# write the datas
$objUtilisateur.SetInfo()
}
Here is something in VBScript (sorry for the vars name in french) :
'==========================================================================
'
' NAME: CREATEUSER.VBS
'
' AUTHOR: JPB , Silogix
' DATE : 29/06/2009
'
' COMMENT:
'
'==========================================================================
Option Explicit
On Error Resume Next
'==========================================================================
' User creation
'==========================================================================
Const UF_NORMAL_ACCOUNT = 512 '0x0200
Function createUser(ou, nom, prenom, telephone, domaine)
On Error Resume Next
Dim L1 ' Première lettre du prénom
Dim Login ' Identifiant de connexion
Dim EMail ' Adresse de courrier
Dim commonName
Dim Password
Dim newUser
Dim mail
Dim strwhereToCreate
Dim ouWhereToCreate
commonName = "CN=" & prenom & " " & nom
Password = "test.2011"
L1 = Mid(prenom, 1, 1)
Login = L1&"."&nom
mail = Login & "@" & domaine
Err.Clear
set newUser = ou.Create ("user", commonName)
newUser.put "userPrincipalName", mail
newUser.put "samAccountName", Login
newUser.SetInfo
If (Err.number <> 0) Then
createUser = Err.number
Exit function
End If
newUser.put "userAccountControl", UF_NORMAL_ACCOUNT
newUser.put "telephoneNumber", telephone
newUser.SetPassword Password
newUser.SetInfo
createUser = 0
End Function
'==========================================================================
' Test of command line arguments
'==========================================================================
If WScript.Arguments.Count <> 1 Then
WScript.Echo "Attention : Il faut au moins un paramètre"
WScript.Echo "Exemple : CreateUser.vbs c:\temp\users.csv"
WScript.Quit(1)
End If
Dim machine
Dim oRootDSE ' Root Directory Service Specific Entry
Dim ofso ' Acces to file system
Dim oUsersFile ' The user file
Dim oADSI ' Acces to ADSI
Dim strwhereToCreate ' Target OU string
Dim ouWhereToCreate ' Target OU object
set ofso = CreateObject("Scripting.FileSystemObject")
' Does file exists
If ofso.FileExists(WScript.Arguments(0)) = False Then
WScript.Echo Err.Description & " : " & WScript.Arguments(0)
WScript.Quit(2)
End If
' AD Connexion
machine = "192.168.183.138"
Set oRootDSE = GetObject("LDAP://" & machine & "/RootDSE")
strwhereToCreate = "ou=OU," & oRootDSE.get("defaultNamingContext")
Set oADSI = GetObject("LDAP:")
Set ouWhereToCreate = oADSI.openDsObject("LDAP://" & machine & "/"&strwhereToCreate, "societe\administrateur", "test.2011", 1)
Set oUsersFile = ofso.OpenTextFile(WScript.Arguments(0))
Do While Not oUsersFile.AtEndOfStream
Dim arrArgUser
Dim strLine
strLine = oUsersFile.ReadLine
arrArgUser = split(strLine,";")
If arrArgUser(0) <> "Prenom" Then
Dim Rc
Rc = 0
Rc = createUser(ouWhereToCreate, arrArgUser(1), arrArgUser(0), arrArgUser(4), "societe.fr")
If Rc <> 0 Then
WScript.Echo "Impossible de Créér " & arrArgUser(0) & " " & arrArgUser(1) & " erreur " & Rc
End If
End If
Loop
精彩评论