IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Modification ou création d'un utilisateur AD en fonction de la description


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Par défaut Modification ou création d'un utilisateur AD en fonction de la description
    Bonjour à tous,


    Avant d'exposer mon problème voici mes conditions :
    chaque utilisateur de mon entreprise possède un numéro uid propre à lui. J'ai donc décider de renseigner cet uid dans le champ description de mes utilisateurs AD de façon a pouvoir faire une recherche en fonction du nom ou de cette uid pour trouver plus facilement l'utilisateur.

    J'ai donc créer un script qui se base sur un fichier texte afin de créer automatiquement mes utilisateurs.
    Mon problème est le suivant : je désire soit créer l'utilisateur soit modifier les champs de l'utilisateur s'il existe déjà. Pour se faire, je voudrais faire mon test en fonction du champ description car ce champ est propre à chaque utilisateur et si un utilisateur viens à changer de nom, mon script risque de me crééer un nouveau alors que c'est juste un changement de nom.Hors cela ne fonctionne pas. Mon test le renvoie toujours nul

    Avez-vous une solution ?



    Stefdu59


    J'ai remplacer mes appels de fonction par des messages box pour vérifier si le test est ok ou nul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    Option Explicit
    'On error Resume Next
     
    'déclaration des variables
    Dim fso
    Dim fichier
    Dim templog
    Dim fichierlog
    Const ForReading = 1
    Const ForWriting = 8
    Const TristateUseDefault = -2
    Dim tableau
    Dim Ligne
    Dim Root
    Dim DomainPath
    Dim objConnection
    Dim objCommand
    Dim objRecordSet
    Dim organisation
    Dim test_description
    Dim nom_complet, account, login, nom, prenom, display, password, unite_org, description
    Const ADS_SCOPE_SUBTREE = 2
     
    'déclaration du fichier csv
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fichier = fso.OpenTextFile("c:\liste.csv", ForReading)
     
    'détermine le fichier de log
    set fichierlog = fso.Getfile("c:\log.txt")
    set templog = fichierlog.OpenAsTextStream(ForWriting,TristateUseDefault)
     
    'boucle pour lire le fichier ligne par ligne
    Do While (Not fichier.AtEndOfStream)
      Ligne = fichier.Readline
      tableau = split(Ligne, ";")
      test_user tableau(0)
    Loop
     
    function test_user (test_description)
     
    	'determine le chemin LDAP
    	organisation = "Test"
    	Set Root = GetObject("LDAP://RootDSE")
    	DomainPath = Root.Get("DefaultNamingContext")
     
    	'Création objet pour connexion avec active directory
    	Set objConnection = CreateObject("ADODB.Connection")
     
    	'Création d'objet pour faire la requete sur l'active directory
    	Set objCommand = CreateObject("ADODB.Command")
     
    	'paramètre de la connexion
    	objConnection.Provider = "ADsDSOObject"
    	objConnection.Open "Active Directory Provider"
    	Set objCommand.ActiveConnection = objConnection
     
    	'requete LDAP pour déterminer si l'utilisateur existe ou pas
    	objCommand.CommandText = "<LDAP://OU=" & organisation & "," & DomainPath & ">;(&(objectCategory=User)" & _
                "(description=" & test_description & "));description;subtree"
     
    	Set objRecordSet = objCommand.Execute
     
    	'boucle qui créer l'utilisateur ou qui modifie ses attributs
    	If objRecordset.RecordCount = 0 then
    	'Cree_Utilisateur test_description, tableau(1), tableau(2), tableau(3), tableau(4), tableau(5), tableau(6), tableau(7), tableau(8)
    	msgbox "test ok "
    	Else
    	'Modif_Utilisateur test_description, tableau(1), tableau(2), tableau(3), tableau(4), tableau(5), tableau(6), tableau(7), tableau(8)
    	msgbox "test nul "
    	End If
     
    	'ferme la connexion avec l'active directory
    	objConnection.close
     
    End function
     
     
    Function Cree_Utilisateur(description, nom_complet, account, login, nom, prenom, display, password, unite_org)
     
       'Indique l'OU de l'utilisateur
       Dim chemin
       organisation = "Test"
       Set chemin = GetObject("LDAP://OU=" & unite_org & "," & "OU=" & organisation & "," & DomainPath)
     
       'Crée l'utilisateur dans l'OU
       Dim User
       Set User = chemin.Create("user", "CN=" & nom_complet)
     
        'Définit le nom d'ouverture de session
        User.Put "sAMAccountName", account
        'Définit le nom d'ouverture de session (antérieur à windows 2000)
        User.Put "userPrincipalName", login
        'Nom de l'utilisateur
        User.Put "sn", nom
    	'Prénom de l'utilisateur
        User.Put "givenName", prenom 
        'Nom affiché
        User.Put "displayName", display
    	'Description de l'utilisateur
    	User.Put "description", description
    	User.SetInfo
    	'mot de passe n'expire jamais
    	const ADS_UF_DONT_EXPIRE_PASSWD = &H10000
        User.Put "userAccountControl",ADS_UF_DONT_EXPIRE_PASSWD
    	'définit le mot de passe
    	User.SetPassword password
        'Active le compte
        User.AccountDisabled = False
    	User.SetInfo
    	'écrire dans le fichier log la réussite de la création de l'utilisateur
    	Templog.Writeline "l'utilisateur " & nom & " " & prenom & " a été créé avec succés dans l'OU " & unite_org
     
    End Function
     
     
    Function Modif_Utilisateur(description, nom_complet, account, login, nom, prenom, display, password, unite_org)
     
     Const ADS_PROPERTY_UPDATE = 2
       'Indique l'OU de l'utilisateur et l'utilisateur
       Dim User
       organisation = "Test"
       Set User = GetObject("LDAP://description=" & description & "," & "OU=" & unite_org & "," & "OU=" & organisation & "," & DomainPath)
    	'Redéfinit le CN de l'utilisateur
    	User.PutEx ADS_PROPERTY_UPDATE, "CN", Array("" & nom_complet)
        'Redéfinit le nom d'ouverture de session
        User.PutEx ADS_PROPERTY_UPDATE, "sAMAccountName", Array("" & account)
        'Redéfinit le nom d'ouverture de session (antérieur à windows 2000)
        User.PutEx ADS_PROPERTY_UPDATE, "userPrincipalName", Array("" & login)
        'Redéfinit le Nom de l'utilisateur
        User.PutEx ADS_PROPERTY_UPDATE, "sn", Array("" & nom)
        'Redéfinit le Nom affiché sur windows
         User.PutEx ADS_PROPERTY_UPDATE, "displayName", Array("" & display)
    	User.SetInfo
    	'définit le mot de passe
    	User.SetPassword password
    	User.SetInfo
     
    End Function

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Par défaut
    Rolalala le tête en l'air que je suis, en faite le test fonctionne bien. c'est juste que mes utilisateurs étaient déjà créer et que j'ai oublié de les supprimer pour faire mon test


    En revanche j'ai une erreur dans ma fonction modif_utilisateur
    elle se situe à ce niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set User = GetObject("LDAP://description=" & description & "," & "OU=" & unite_org & "," & "OU=" & organisation & "," & DomainPath)
    je ne peux pas me baser sur le cn pour faire le getobject vu que si l'utilisateur a changer de nom, j'aurais une erreur comme quoi l'objet utilisateur n'éxiste pas sur le serveur.



    Stefdu59

Discussions similaires

  1. Création des comptes utilisateurs a partir d'un script et fichier texte
    Par hocine1978 dans le forum Administration système
    Réponses: 2
    Dernier message: 26/12/2006, 14h11
  2. probleme lors de la création d'un utilisateur sur un poste client.
    Par passion_info dans le forum Windows Serveur
    Réponses: 5
    Dernier message: 29/11/2006, 11h13
  3. Création d'interfaces utilisateurs
    Par vingrid6 dans le forum Access
    Réponses: 1
    Dernier message: 24/05/2006, 15h53
  4. []Création automatique d'utilisateurs
    Par SaeZ dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 27/10/2005, 13h38
  5. création de comptes utilisateur
    Par junty dans le forum Access
    Réponses: 10
    Dernier message: 17/10/2005, 09h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo