2009-06-28 5 views
0

Je dois ajouter un groupe d'utilisateurs à un domaine AD et je ne veux évidemment pas entrer manuellement. Je ne veux pas non plus utiliser CSVDE parce que je veux y ajouter des mots de passe. Je n'ai pas beaucoup d'expérience en écriture de scripts VBScript, alors j'en ai trouvé un sur internet de techrepublic. Le problème est lorsque j'exécute le script, j'obtiens une erreur de boucle attendue et les utilisateurs dans le fichier csv ne sont jamais ajoutés. Si je lance une ligne de boucle à la fin du fichier vbs, cela crée l'utilisateur, mais il me donne alors une erreur que le compte existe déjà, car il essaie clairement de réexécuter le script. Est-ce que quelqu'un a un aperçu de ce que j'ai besoin de changer pour que ce script fonctionne correctement?Erreur de boucle attendue sur VBScript pour ajouter des utilisateurs dans AD via csv

' --------------------------------------------------- 

'Script: createusersfromcsv.vbs ' Auteur: Scott Lowe 'entrée: fichier CSV avec la mise en page LogonName, nom, prénom, mot de passe ' DATE: 21 Décembre, 2005 'Change log: ' non changements '----------------------------------------------- -----

Option Explicit

Dim Dim sCSVFileLocation sCSVFile Dim oConnection Dim oRecordSet Dim oNewUser

'variables nécessaires à la connexion LDAP Dim oRootLDAP Dim oContainer

' des variables tenant à l'importation d'informations de fichier CSV Dim slogon Dim sFirstName Dim sNom Dim sDisplayName Dim sPassword Dim nPwdLastSet Dim nUserAccountControl 'Permet d'activer le compte Dim sDomain

'Modifier ce pour correspondre domaine AD de votre entreprise sDomain = "mydomain.com"

' fichier d'entrée emplacement sCSVFileLocation = "C: \ Scripts \" « GARDEZ slash!

'chemin complet vers le fichier d'entrée sCSVFile = sCSVFileLocation & "Book2.csv"

' Les commandes utilisées pour ouvrir le fichier CSV et sélectionnez tous les enregistrements ensemble oConnection = CreateObject ("ADODB.Connection") ensemble oRecordSet = CreateObject ("ADODB.Recordset") oConnection.open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & sCSVFileLocation & "; Propriétés étendues =" "text, HDR = NO; FMT = délimité "" " oRecordSet.open" SELECT * FROM "& sCSVFile, oConnexion

'Créer une connexion au conteneur Utilisateurs Active Directory. Set oRootLDAP = GetObject ("LDAP: // rootDSE") Set oContainer = GetObject ("LDAP: // cn = Users," & _ oRootLDAP.Get ("defaultNamingContext"))

'Permet le traitement de continuer même si une erreur survientutilisateur dup) « Nous avons mis ce ci-dessous les informations CSV et AD puisque le traitement peut » continuer avec un seul mauvais dossier, mais pas s'il y a un problème avec la connexion fichier CSV ou AD lors de la reprise d'erreur suivant

jusqu'à oRecordSet.EOF 'Lit les valeurs (cellules) dans le fichier sInputFile.

« --------- Commencer à créer compte utilisateur » Lire des informations variables à partir du fichier CSV 'et tout construire nécessaire pour créer le compte slogon = oRecordSet.Fields.Item (0) .value sFirstName = oRecordSet.Fields.Item (1) .value = sNom oRecordSet.Fields.Item (2) .value sDisplayName = sNom & "" & sFirstName sPassword = oRecordSet.Fields.Item (3) .Value

'Créer le compte d'utilisateur Set oNewUser = oContainer.Create ("User", "cn =" & sFirstName & "" & sNom)

oNewUser.put "sAMAccountName", lcase (slogon) oNewUser.put "givenName", sFirstName oNewUser.put "sn", sNom oNewUser.put "UserPrincipalName", lcase (slogon) & "@" & sDomain oNewUser.put "DisplayName", sDisplayName oNewUser.put "name", lcase (slogon)

'write ces informations dans active Directory afin que nous puissions ' modifier le mot de passe et activer le compte d'utilisateur oNe wUser.SetInfo

'Modifier le mot de passe des utilisateurs oNewUser.SetPassword sPassword oNewUser.Put "pwdLastSet", 0

' activer le compte utilisateur oNewUser.Put "userAccountControl", 512 oNewUser.SetInfo

'Utilisé uniquement pour le débogage ' si Err.Number = -2147019886 puis MsgBox "connexion utilisateur" & slogon & "existe déjà" ' End If

'--------- Création de compte de fin d'utilisateur

Répondre

0

J'ai trouvé la réponse de quelques recherches de google supplémentaires.
A la fin je besoin d'un: oRecordSet.MoveNext boucle

Et cela a fonctionné alors.

Questions connexes