[..] Réinitialisation mot de passe domain par script

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
turistceto
Niveau 3
Niveau 3
Messages : 32
Enregistré le : jeu. 22 nov. 2012 18:12
Status : Hors ligne

[..] Réinitialisation mot de passe domain par script

#1

Message par turistceto »

Bonjour tous le monde,

j'aurais besoin de vos services SVP.

Je ne me connais pas beaucoup en script, et j'essai de monter des choses avec des bouts de script que je trouve a gauche et a droite.

Tous les jours, nous avons des demandes de réinitialisation de mot de passe utilisateur suite à des oublis. j'ai pensé à mettre en place un script qui permettrait aux responsable des différents services de réinitialiser le mot de passe de leur techniciens et en même temps nous soulagerais dans notre charge de travail.

Mais voila je rencontre un problème au niveau du recherche nom utilisateur, pour comparer entre ce que je rentre dans le GUi et ce qui existe dans l'AD.

J'ai trouvé un script qui permet de modifier le mot de passe de la session en cours d'utilisation et je l'ai modifié de façon a ce qu'on puisse le faire sur le login d'un autre utilisateur, mais le problème quand je met le login de l'utilisateur concerné, le script ne vérifie pas si le login est bon ou pas pour connaître l'existante du login.

voici le script
► Afficher le texte
je sais que le script n'est pas propre, pouvez vous m'aider SVP

Merci
Modifié en dernier par turistceto le lun. 20 avr. 2015 13:47, modifié 2 fois.
turistceto
Niveau 3
Niveau 3
Messages : 32
Enregistré le : jeu. 22 nov. 2012 18:12
Status : Hors ligne

Re: [..] Réinitialisation mot de passe domain par script

#2

Message par turistceto »

Bonjour tous le monde,

Est ce que vous avez une solution a mon problème SVP
turistceto
Niveau 3
Niveau 3
Messages : 32
Enregistré le : jeu. 22 nov. 2012 18:12
Status : Hors ligne

Re: [..] Réinitialisation mot de passe domain par script

#3

Message par turistceto »

Bonjour A tous,

j'ai plus ou moins réussi à faire ce que je voulais, cela fontionne pas male, il me manque juste la fontion recherche pour pouvoir fair une recher avec le nom d'un user dans l'ad, mais pour le moment avec son login de connexion au domaine cela fonctionne bien.

Pour ce qui serai intéressé voici mon code

Code : Tout sélectionner

#AutoIt3Wrapper_AU3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#AutoIt3Wrapper_AU3Check_Stop_OnWarning=Y
; *****************************************************************************
; Example 1
; Queries the sAMACccountName and the password and tries to change the password.
; *****************************************************************************
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <string.au3>
#include <Array.au3>
#include <AD.au3>

; Open Connection to the Active Directory
_AD_Open("useradmin","pwdadmin","OU=computer,DC=mondomain,DC=loc","dc1.mondomaine.loc","CN=dc1,DC=mondomain,DC=loc")

If @error Then Exit MsgBox(16, "Réinit MDP active Directory", "La fonction AD a rencontré un problème. @error = " & @error & ", @extended = " & @extended)

Global $iReply = MsgBox(308, "Réinit MDP active Directory", "Ce script vous permets de modifier le mot de passe Domaine ." & @CRLF & @CRLF & _
        "Etes vous sur de continuer?")
If $iReply <> 6 Then Exit

; Enter user and password to change
#region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Reset Password pour Domaine ", 633, 506, -1, -1, BitOR($WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS))
GUICtrlCreateLabel("Bienvenue!", 8, 8, 154, 33)
GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
GUICtrlCreateLabel("Vous pouvez changer votre mot de passe du domain ici", 8, 48, 589, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Group1 = GUICtrlCreateGroup(" Login Domain ", 8, 80, 617, 137)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
Global $IUser = GUICtrlCreateInput("",  264, 112, 337, 31)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlCreateLabel("Login Utilisateur:", 24, 115, 188, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlCreateLabel("Assurez vous d'avoir le bon login de l'utilisateur concerné avant toute action", 16, 150, 549, 20, $SS_CENTER)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlCreateLabel("Le login peut etre sous la forme suivantes comme dans l'Example ci dessous", 16, 170, 550, 20, $SS_CENTER)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlCreateLabel("Utilisater Jean Pincemin : jean.pincemin ou jpincemin ou jpn", 16, 190, 550, 20, $SS_CENTER)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Group2 = GUICtrlCreateGroup(" Définir mot de passe ", 8, 232, 617, 169)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
Global $IPassword1 = GUICtrlCreateInput("", 264, 264, 337, 31, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlCreateLabel("Nouveau Mot De Passe:", 24, 267, 188, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
Global $IPassword2 = GUICtrlCreateInput("", 264, 312, 337, 31, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlCreateLabel("Répéter le mot de passe:", 24, 315, 188, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
Global $BOK = GUICtrlCreateButton("Change Password", 8, 456, 297, 41)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
Global $BCancel = GUICtrlCreateButton("Cancel", 328, 456, 297, 41, BitOR($GUI_SS_DEFAULT_BUTTON, $BS_DEFPUSHBUTTON))
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlCreateLabel("Votre mot de passe doit comporter au minimum 8 caractères et doit contenir 3 types de caractères", 0, 352, 649, 20, $SS_CENTER)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlCreateLabel("suivants: masjuscule, minuscule,chiffre et peut comporter en plus des caractères spéciaux:", 0, 368, 650, 20, $SS_CENTER)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlCreateLabel("Exemple de mot de passe valide:  Lz@v1245 ou opk45$sc ou 2890=&ttz ou Mm12pf!22", 16, 384, 550, 20, $SS_CENTER)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$alert = GUICtrlCreateLabel("Messages d'erreur", 8, 408, 617, 41, BitOR($SS_CENTER,$SS_CENTERIMAGE,$WS_BORDER))
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFF00)
GUICtrlSetBkColor(-1, 0xFF0000)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
    Global $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE, $BCancel
            Exit
        Case $BOK
            Global $sUser = GUICtrlRead($IUser)
            $sUser = _AD_SamAccountNameToFQDN($sUser)
            Global $sPassword1 = GUICtrlRead($IPassword1)
            $sPassword2= GUICtrlRead($IPassword2)
            ;ExitLoop

    Global $iValue = _AD_SetPassword($sUser, $sPassword1)

    If $sPassword1 <> $sPassword2 Then
    GUICtrlSetData($alert,"Les mots de passe ne correspondent pas!")
    GUICtrlSetState($alert,$GUI_SHOW)
    ContinueCase
   EndIf

   ;Test 2: Verification de la longueur du mot de pass? 8 chiffre u carachtere minimum
   If StringLen($sPassword1) < 8 Then
    GUICtrlSetData($alert,"Mot de passe est trop court! Au moins HUIT caractères!")
    GUICtrlSetState($alert,$GUI_SHOW)
    ContinueCase
   EndIf
   ;Test 3: verifi la presence de chiifre?
If StringRegExp($sPassword1,"[0-9]",0) = 0 Then
    GUICtrlSetData($alert,"Pas de chiffre défini dans le mot de passe!")
    GUICtrlSetState($alert,$GUI_SHOW)
    ContinueCase
   EndIf
   ;Test 4: Verifie la presence de lettre minuscule?
If StringRegExp($sPassword1,"[a-z]",0) = 0 Then
    GUICtrlSetData($alert,"Aucune lettre minuscule (a-z) contient mot de passe!")
    GUICtrlSetState($alert,$GUI_SHOW)
    ContinueCase
   EndIf
   ;Test 5: Verifie la presence de lettre Majuscule?
If StringRegExp($sPassword1,"[A-Z]",0) = 0 Then
    GUICtrlSetData($alert,"Aucune lettre majuscule (A-Z) contient mot de passe!")
    GUICtrlSetState($alert,$GUI_SHOW)
    ContinueCase
   EndIf

   ;Definition message d'erreur avec couleur
   GUICtrlSetData($alert,"Modification Mot de Passe ENCOURS!")
   GUICtrlSetBkColor($alert,0x00DD00) ;Contexte vert au lieu de rouge
   GUICtrlSetColor($alert, 0x000000) ;Font couleur noire au lieu de jaune
   GUICtrlSetState($alert,$GUI_SHOW) ;Indicateurs (précédemment invisible)
   GUICtrlSetState ($BOK,$GUI_DISABLE) ; Desactive le boutton definir mdp
   Sleep (2000) ;
   GUICtrlSetData($alert,"Definissez maintenant le Mot de passe ..... ")
;   EndSwitch
;WEnd
;;;;;;;;;;;;;;;;;;;
Global $iValue = _AD_SetPassword($sUser, $sPassword1)
If $iValue = 1 Then
    GUICtrlSetData ($alert,"Mot de passe a été changé avec succès!")
   ; MsgBox(64, "Active Directory Functions - Example 1", "Password for user '" & $sUser & "' successfully changed")
    GUICtrlSetBkColor($alert,0xFF00) ;Hintergrund auf Rot
    GUICtrlSetColor($alert, 0xFFFF00) ;Schriftfarbe Gelb
    GUICtrlSetState ($BOK,$GUI_ENABLE)
 ElseIf @error = 0 Then
    GUICtrlSetData ($alert,"Le nom ne correspond pas!")
    ;MsgBox(64, "Active Directory Functions - Example 1", "User '" & $sUser & "' does not exist")
    GUICtrlSetBkColor($alert,0xFF00) ;Hintergrund auf Rot
    GUICtrlSetColor($alert, 0xFFFF00) ;Schriftfarbe Gelb
    GUICtrlSetState ($BOK,$GUI_ENABLE)
   Else
    GUICtrlSetData($alert,"Mot de passe n'a pas pu être modifié veuillez verifier le login de l'utilisateur !")
  ; MsgBox(64, "Active Directory Functions - Example 1", "User '" & $sUser & "' does not exist")
   GUICtrlSetBkColor($alert,0xFF00) ;Hintergrund auf Rot
    GUICtrlSetColor($alert, 0xFFFF00) ;Schriftfarbe Gelb
    GUICtrlSetState ($BOK,$GUI_ENABLE)
 EndIf

EndSwitch
WEnd
_AD_Close()
 
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Réinitialisation mot de passe domain par script

#4

Message par jguinch »

Pour rechercher un objet dans l'AD : _AD_GetObjectsInOU
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
turistceto
Niveau 3
Niveau 3
Messages : 32
Enregistré le : jeu. 22 nov. 2012 18:12
Status : Hors ligne

Re: [..] Réinitialisation mot de passe domain par script

#5

Message par turistceto »

Merci jguinch pour ton conseil, mais je n'ai pas réussit à combiner mon scripte avec la fonction _AD_GetObjectsInOU

pourrais tu m'aider stp

Merci d'avance
Répondre