Invité Invité Posté(e) le 11 octobre 2005 Partager Posté(e) le 11 octobre 2005 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 More sharing options...
Invité Invité Posté(e) le 13 octobre 2005 Partager Posté(e) le 13 octobre 2005 Ben je vois que ca interresse pas grand mon, juste au cas ou, voila une adresse sympa, j'en ai d'autre, si y'en a qui veulent. http://www.wisesoft.co.uk/accountmanagement.php ou bien voir ici : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/iadsclass.asp Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité Invité Posté(e) le 13 octobre 2005 Partager Posté(e) le 13 octobre 2005 rofl .. Ca me dépasse tout ca Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité Invité Posté(e) le 13 octobre 2005 Partager Posté(e) le 13 octobre 2005 Sinon clairement ça sert à quoi ton truc? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité Invité Posté(e) le 14 octobre 2005 Partager Posté(e) le 14 octobre 2005 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 More sharing options...
Messages recommandés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant