Aller au contenu

Creation automatique sous Active Directory


Invité Invité

Messages recommandés

Voila, j'ai du mal avec Wscript, j'ai pas trouvé les parametre objets a passer pour renseigner le chemain du profil terminal server

 

Voici ce qu j'ai pour l'inbstant (j'ai tout cela qui est OK), je l'ai trouvé je ne sais plus oumais le gars l'a asuper bien fait, il ne me manque plus que le chemin Terminal server et renseigner le sous groupe dans l'arborescence AD. Si quelqu'un pouvait m'aider...

 

'Toute variable utilisée doit être déclarée proprement

Option Explicit

 

'On s'occupe nous même des erreurs rencontrées

On Error Resume Next

 

'****************************************************

'* Déclaration des constantes *

'****************************************************

 

Const ForReading = 1

Const ForWriting = 2

 

Const FILE_SHARE = 0

Const MAXIMUM_CONNECTIONS = 5

 

 

'****************************************************

'* Déclaration des variables *

'****************************************************

 

Dim DCServer 'Serveur Controleur de domaine

Dim EXCHServer 'Serveur Exchange

Dim OrganisationExchange 'Organisation Exchange

Dim DomainName 'Nom de domaine au format LDAP

Dim FQDN 'FQDN du domaine

Dim DomaineNetBios 'Nom du domaine NetBios

Dim OUprincipale 'OU contenant les OU des utilisateurs

Dim LigneUtilisateur 'Contient une ligne du fichier texte

Dim TabTmpUtilisateur 'Tableau contenant les informations splitées de la ligne lue

Dim CheminADExchange 'Chemin pour la création des bopites aux lettres

Dim Conteneur 'Conteneur pour l'utilisateur

Dim user 'Objet utilisateur

Dim objMailbox 'Objet boite aux lettres

Dim Fso 'Pointeur sur le système de fichier

Dim FichierTexte 'Chemin plus nom du fichier contenant la liste des utilisateurs

Dim NomFichiertexte 'Nom du fichier texte qui sera donner à manger au script

Dim PtFichierTexte 'Pointeur sur l'entrée du fichier texte

Dim NomFichierLog 'Nom du fichier log

Dim PtFichierLog 'Pointeur sur l'entrée du fichier Log

Dim ErreurEnCours 'Teste s'il y'a eu une erreur précedemment dans l'éxécution

Dim StrErr 'Chaine contenant le message d'erreur qui va être écrit

Dim OUutilisateur 'OU de destination de l'objet utilisateur

Dim SAMName 'Nom utilisateur au format pré-2000

Dim PrincipalName 'Nom utilisateur sous Active Directory

Dim NomFamille 'Nom de famille de l'utilisateur

Dim Prenom 'Prénom de l'utilisateur

Dim NomAffiche 'Nom tel qu'il apparaitra dans les listes Exchange

Dim Service 'Service

Dim Fonction 'Fonction apparaissant dans le champ description

Dim Division 'Division de l'utilisateur

Dim AdrMail 'Adresse Email de l'utilisateur pour le smtp

Dim SizeMaxMailEnvoi 'Taille maximal des mails en envoi

Dim Tel 'Téléphone de l'utilisateur

Dim Fax 'Fax de l'utilisateur

Dim NbBatiment 'Batiment de l'utilisateur

Dim NbPiece 'Piece de l'utilisateur

Dim MdpDefaut 'Mot de passe par défaut lors de la création de l'utilisateur

Dim objOU 'Objet Unité organisation

 

 

'****************************************************

'* Déclaration des fonctions *

'****************************************************

 

' ****

'Cette fonction a pour but de remplacer tous les

'caractères spéciaux qui pourraient être contenus dans

'la chaine passée en paramètre par leurs équivalents

'sans accent

' ****

Function VerifString (MaChaine)

MaChaine = Replace(MaChaine,"é","e")

MaChaine = Replace(MaChaine,"è","e")

MaChaine = Replace(MaChaine,"ê","e")

MaChaine = Replace(MaChaine,"à","a")

MaChaine = Replace(MaChaine,"â","a")

MaChaine = Replace(MaChaine,"ô","o")

MaChaine = Replace(MaChaine,"ù","u")

MaChaine = Replace(MaChaine,"û","u")

MaChaine = Replace(MaChaine,"î","i")

VerifString = MaChaine

End Function

 

 

' ****

'Ecrit dans le fichier de log avec le préfixe info

' ****

sub LogInfo (MonTexte)

PtFichierLog.WriteLine "Info: " & VbCrLf & MonTexte & VbCrLf & "________" & VbCrLf

end sub

 

 

' ****

'Ecrit dans le fichier de log avec le préfixe warning

' ****

sub LogWarning (MonTexte)

PtFichierLog.WriteLine "Warning: " & VbCrLf & MonTexte & VbCrLf & "________" & VbCrLf

end sub

 

 

' ****

'Ecrit dans le fichier de log avec le préfixe error

' ****

sub LogError (MonTexte)

PtFichierLog.WriteLine "Error: " & VbCrLf & MonTexte & VbCrLf & "________" & VbCrLf

end sub

 

 

' ****

'Cette fonction a pour but de gérer les erreurs

'Le tout enregistrer dans le fichier log

' ****

Function ErreurAD (action,texte)

ErreurAD = False

StrErr = action & VbCrLf

If Err.Number = &H80071392 Then

strErr = strErr & "-> L'objet existe déjà "

StrErr = StrErr & "Description: " & Err.Description & VbCrLf

StrErr = StrErr & "_________________________________________________"

Else

StrErr = StrErr & "Erreur inconnue !? " & VbCrLf

StrErr = StrErr & "Numéro: " & Hex(Err.Number) & VbCrLf

StrErr = StrErr & "Source: " & Err.Source & VbCrLf

StrErr = StrErr & "Description: " & Err.Description & VbCrLf

End If

 

if (action = "Erreur") or (action="erreur") then

LogError (texte)

ErreurAD = true

end if

 

if (action = "Warning") or (action="warning") then LogWarning (texte)

if (action = "Info") or (action = "info") then LogInfo (texte)

 

Err.Clear

 

End Function

 

 

' ****

' Cette fonction crée l'OU si elle n'existe pas

' ****

function create_if_not_exist (STR_OU)

set Conteneur = GetObject("LDAP://dc=coxprod,dc=org")

Set objOU = Conteneur.Create("organizationalUnit", STR_OU)

objOU.SetInfo

 

set objOU = null

set Conteneur = null

 

create_if_not_exist = true

end function

 

 

'*************************************************

'* DEBUT DU SCRIPT *

'*************************************************

 

Set Fso = CreateObject("Scripting.FileSystemObject")

 

'** Initialisation des variables pour avoir accès à AD **

 

DomainName = "DC=coxprod,DC=org"

FQDN = "coxprod.org"

DomaineNetbios = "coxprod"

DCServer = "utopie-2k3"

OUprincipale = "OU=OU utilisateurs"

 

create_if_not_exist (OUprincipale)

Err.clear

 

' ** Pour Exchange **

 

EXCHServer = "utopie-2k3"

OrganisationExchange = "coxprod"

CheminADExchange = "CN=Banque de boîtes aux lettres (" & EXCHServer & ")" & _

",CN=Premier groupe de stockage,CN=InformationStore,CN=" & EXCHServer & _

",CN=Servers,CN=Premier groupe d'administration,CN=Administrative Groups" & _

",CN=" & OrganisationExchange & ",CN=Microsoft Exchange" & _

",CN=Services,CN=Configuration," & DomainName

 

 

' ** Initialisation des variables communes à tous les utilisateurs **

 

SizeMaxMailEnvoi = "5000"

MdpDefaut = "azerty"

 

 

' ** gestion du fichier texte qui sera donner à manger au script

' ** Le fichier texte devra se trouver dans le même répertoire que le script

 

NomFichiertexte = "Document.txt"

FichierTexte = Fso.GetParentFolderName(WScript.ScriptFullName) & "\" & NomFichiertexte

Set PtFichierTexte = Fso.OpenTextFile(FichierTexte, ForReading, False)

 

 

' ** gestion du fichier log qui sera générer par le script

' ** Le fichier se trouvera dans le même répertoire que le script

 

NomFichierLog = "Err.log"

Set PtFichierLog = Fso.OpenTextFile(Fso.GetParentFolderName(WScript.ScriptFullName) & _

"\" & NomFichierLog, ForWriting, True)

 

 

 

' ** Execution de la boucle

 

While Not PtFichierTexte.AtEndOfStream

 

ErreurEnCours = False

 

' ** Lit la ligne puis seplace devant la ligne précédente

LigneUtilisateur = PtFichierTexte.ReadLine

 

' ** Place dans un tableau les différentes parties lues dans la ligne

TabTmpUtilisateur = Split(LigneUtilisateur, ";")

 

' ** Initialisation des variables avec les valeurs lues dans la ligne

NomFamille = TabTmpUtilisateur(0)

Prenom = TabTmpUtilisateur(1)

Service = TabTmpUtilisateur(2)

Fonction = TabTmpUtilisateur(3)

Division = TabTmpUtilisateur(4)

Tel = TabTmpUtilisateur(5)

Fax = TabTmpUtilisateur(6)

NbBatiment = TabTmpUtilisateur(7)

NbPiece = TabTmpUtilisateur(8)

 

' ** Soucis d'ésthétique

NomFamille = UCase (NomFamille) ' Majuscule

Prenom = LCase (Prenom) ' Minuscule...

Prenom = UCase (Left (Prenom,1)) + Right (Prenom,Len (Prenom)-1)

' ** 1ere lettre majuscule

Service = UCase (Service) ' Majuscule

Fonction = LCase (Fonction) ' Minuscule

 

' ** A l'aide des valeurs lues on fini d'initialiser le reste des variables

SAMName = NomFamille & "." & Prenom

PrincipalName = NomFamille & " " & Prenom

NomAffiche = NomFamille & " " & Prenom

 

OUutilisateur = "OU=" & Division

create_if_not_exist (OUutilisateur & "," & OUprincipale)

Err.clear

 

AdrMail = VerifString (Prenom & "." & NomFamille) & "@" & FQDN

 

Set Conteneur = GetObject("LDAP://" & OUutilisateur & "," & OUprincipale & "," & DomainName)

Set user = Conteneur.Create("user", "CN=" & PrincipalName)

User.Put "SAMAccountName", SAMName

user.SetInfo

 

If Err 0 Then

ErreurEnCours = ErreurAD ("Warning","Création utilisateur compte : " & SAMName)

' ** Si il y'a une erreur on initialise ErreurEnCours pour passer

' ** à l'utilisateur suivant puis on la gère à l'aide

' ** de la fonction ErreurUtilisateur

Else

user.Put "userPrincipalName", PrincipalName & "@" & FQDN

User.Put "sn", NomFamille

User.Put "givenName", Prenom

User.Put "displayName", NomAffiche

User.Put "description", Fonction

User.Put "department", Division

User.Put "title", Fonction

User.put "facsimileTelephoneNumber", Fax

User.put "telephoneNumber", Tel

User.put "physicalDeliveryOfficeName", "Batîment " & NbBatiment & " pièce " & NbPiece

User.SetPassword MdpDefaut

User.AccountDisabled = False

User.SetInfo

If Err 0 Then

' Si il y'a une erreur on initialise ErreurEnCours pour passer

' à l'utilisateur suivant puis on la gère à l'aide

' de la fonction ErreurUtilisateur

ErreurEnCours = ErreurAD ("Warning","Configuration utilisateur : " & SAMName)

End If

End If

 

If Not ErreurEnCours Then

Set objMailbox = CreateObject ("CDO.Person").getinterface("IMailboxStore")

Set objMailbox = user

objMailbox.CreateMailBox (CheminADExchange)

objMailbox.ProxyAddresses = "SMTP:" & AdrMail

objMailbox.SetInfo

If Err 0 Then

ErreurEnCours = ErreurAD ("Warning","Création boite aux lettres " & PrincipalName)

Else

User.put "mailNickname", PrincipalName

User.put "submissionContLength", SizeMaxMailEnvoi

User.SetInfo

If Err 0 Then

' S'il y'a une erreur, on appelle la fonction

' ErreurBoiteAuxLettres qui enregistre l'erreur

' dans les logs

ErreurEnCours = ErreurAD ("Warning","Configuration boite aux lettres " & PrincipalName)

End If

End If

End If

 

' On vide proprement les variables utilisées

Set Conteneur = Nothing

Set user = Nothing

Set objMailbox = nothing

 

Wend

 

' ** Fin d'execution de la boucle

 

Lien vers le commentaire
Partager sur d’autres sites

Ben clairement, il se peut que tu aies à crééer disons 200 utilisateur sur ton domaine. ce script te permet de les creer automatiquement à partir d'un fichier csv (separateur virgule). au lieu de passer 2 semaines, tu mets un jour a peine. le wscript, wmi et autres, ca remmplace les fichiers .bat ou .cmd (batch) qui n'offrent plus assez de possiblilité pour un administrateur.

 

en fait je fesais appel surtout au progammeurs pour les propriétés objets que je ne connais pas, mais je vais aller voir sur d'autres forums plus spécialisé, car c'est un peu 'technique' cette histoire.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
  • Statistiques des membres

    23 028
    Total des membres
    1 033
    Maximum en ligne
    Subaru
    Membre le plus récent
    Subaru
    Inscription
  • Statistiques des forums

    128,1 k
    Total des sujets
    1,7 M
    Total des messages
×
×
  • Créer...