Automatiser l'import de données dans AD
Résolu/Fermé
jerem7286
Messages postés
78
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
6 juin 2012
-
11 juin 2008 à 15:09
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 - 11 juin 2008 à 15:33
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 - 11 juin 2008 à 15:33
A voir également:
- Automatiser l'import de données dans AD
- Dans cette présentation, sarah avait encadré directement le titre de certaines diapositives avant d'automatiser cette mise en forme pour tout le document. sur quelles diapositives avait-elle encadré directement le titre ? ✓ - Forum Bureautique
- Présentation d'une diapositive - Forum Bureautique
- ".Ms-ad" - Forum Windows 10
- Exemple base de données access à télécharger gratuit - Forum Access
- Modèle conceptuel de données - Astuces et Solutions
1 réponse
onesdf
Messages postés
375
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
17 octobre 2008
120
11 juin 2008 à 15:30
11 juin 2008 à 15:30
Par VBS,
Je te mets une copie rapidement modifiée de celui que j'ai utilisé récemment, à adapter à ton réseau bien évidemment :
Je te mets une copie rapidement modifiée de celui que j'ai utilisé récemment, à adapter à ton réseau bien évidemment :
Option Explicit
Dim fso
Dim fichier
Dim Ligne
Dim v
Dim pole, nom, prenom, login, pass, fonction, email
Dim message
Set fso = CreateObject("Scripting.FileSystemObject")
Set fichier = fso.OpenTextFile("users.csv", 1)
Do While Not fichier.AtEndOfStream
Ligne = fichier.Readline
v = Split(Ligne, ";")
Call Cree_Utilisateur(v(0), v(1), v(2), v(3), v(4), v(5), v(6))
Loop
Sub Cree_Utilisateur(pole, nom, prenom, login, pass, fonction, email)
Dim Domaine
Domaine = ",DC=Domaine,DC=Local"
' Construction de l'unité organisationnelle
Dim nomOU
nomOU = "OU=" & pole & ",OU=Personnels" & Domaine
Dim tmp
tmp = nomOU
Call CreeOU(tmp, Domaine)
Dim OU
Set OU = GetObject("LDAP://" & nomOU)
OU.Filter = Array("user")
Dim existe, element
For Each element In OU
Dim test
test = "CN=" & prenom & " " & nom
MsgBox element.Name & " " & test
If element.Name = test Then
existe = 1
MsgBox "Existe"
End If
Next
If existe = 0 Then
' Crée l'utilisateur dans l'OU
Dim User
Set User = OU.Create("user", "CN=" & prenom & " " & nom)
'Définit le nom d'ouverture de session
User.Put "SAMAccountName", login
User.SetInfo
' Nom d'ouverture de session
User.Put "userPrincipalName", login
' Nom d'usage
User.Put "sn", nom
' Prénom
User.Put "givenName", prenom
' Nom affiché
User.Put "displayName", prenom & " " & nom
' Script de connexion
User.Put "scriptpath", "script.bat"
' Home Directory
User.Put "homedirectory", "\\SERVEUR\" & login & "$"
User.SetInfo
' Adresse Email
If email <> "" Then
User.Put "mail", email
End If
' Description
User.Put "description", fonction
User.SetInfo
' Active le compte
User.AccountDisabled = False
User.SetInfo
' Crée le dossier utilisateur
Call CreeDossier("Utilisateurs\Personnels\" & pole & "\" & login & "$")
' Partage le dossier
Dim ServeurFichiers
Dim Partage
Set ServeurFichiers = GetObject("WinNT://Domaine/SERVEUR/Lanmanserver")
Dim PartageCache
PartageCache = login & "$"
MsgBox PartageCache
Set Partage = ServeurFichiers.Create("fileshare", PartageCache)
Partage.Path = "C:\Utilisateurs\Personnels\" & pole & "\" & login & "$"
Partage.SetInfo
' Définit le mot de passe
Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000
Const ADS_UF_PASSWD_CANT_CHANGE = &H40
Set User = GetObject("WinNT://Domaine/" & login)
User.SetPassword pass
User.Put "userFlags", User.Get("UserFlags") Or ADS_UF_PASSWD_CANT_CHANGE
User.Put "userFlags", User.Get("UserFlags") Or ADS_UF_DONT_EXPIRE_PASSWD
User.SetInfo
' Ajoute l'utilisateur au groupe
Dim LeGroupe
Set LeGroupe = GetObject("LDAP://CN=" & pole & ", " & nomOU)
LeGroupe.Add "LDAP://CN=" & prenom & " " & nom & ", " & nomOU
LeGroupe.SetInfo
End If
End Sub
Sub CreeOU(chemin, DOM)
chemin = Left(chemin, Len(chemin) - Len(DOM))
Dim Toutes
Toutes = Split(chemin, ",")
Dim combien, element, adspath, i
For Each element In Toutes
combien = combien + 1
Next
DOM = Right(DOM, Len(DOM) - 1)
adspath = DOM
For i = combien - 1 To 0 Step -1
' Vérifie si l'élément existe
Dim obj
Set obj = GetObject("LDAP://" & adspath)
obj.Filter = Array("organizationalUnit")
Dim item, existe
existe = 0
For Each item In obj
If item.Name = Toutes(i) Then
existe = 1
End If
Next
If existe = 0 Then
' Creation de l'OU
Dim NewOU
Set NewOU = obj.Create("organizationalUnit", Toutes(i))
NewOU.SetInfo
' Création du groupe dans l'OU Créée
Dim NouveauGroupe, NomGroupe, temp
NomGroupe = Right(Toutes(i), Len(Toutes(i) - 3))
temp = Split(adspath, ",")
NomGroupe = NomGroupe & " " & Right(temp(0), Len(temp(0)) - 3)
Set NouveauGroupe = NewOU.Create("group", "CN=" & NomGroupe)
NouveauGroupe.SetInfo
End If
adspath = Toutes(i) & "," & adspath
Next
End Sub
Sub CreeDossier(chemin)
Dim dossiers, racine, repertoire, fso
dossiers = Split(chemin, "\")
racine = "C:\"
For Each repertoire In dossiers
Set fso = CreateObject("Scripting.filesystemobject")
If Not fso.folderexists(racine & repertoire) Then
fso.createfolder racine & repertoire
End If
racine = racine & repertoire & "\"
Next
End Sub
11 juin 2008 à 15:32
11 juin 2008 à 15:33
(et c'est bien description :oP)