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
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <string.au3>
#include <Array.au3>
#include <AD.au3>
; Passwort Änderungen für Exchange Umstellung
; April 2011 von Bernhard Linz
; Bernhard.Linz@datagroup.de
; ######################################################
; Variablen deklarien
Dim $EingelesendeZeile
Dim $EingelesendeZeileArray
Dim $NameLinks
Dim $NameRechts
Dim $BenutzerListeDatei
Dim $DomainALT = "Mondomaine"
Dim $DomainNEU = "Mondomaine"
Dim $DomainAKTUELL
Dim $BenutzernameALT ;Benutzeranmeldename in der Domäne aus der das Programm aufgerufen wird in der Regel alte Domäne
Dim $BenutzernameNEU ;Benutzeranmdelename aus der Ziel-Domäne
Dim $Passwort1
Dim $Passwort2
Dim $Rueckgabewert
Dim $AdminBenutzer = "useradm"
Dim $AdminBenutzerPasswort = "pwdadm"
Dim $DomainControllerZielDomain = "DC1"
; Prüfen ob wir uns denn aus der richtigen Domäne anmelden ...
_AD_Open("useradm","pwdadm","OU=user,DC=mondomaine,DC=loc","dc1.mondomaine.loc","CN=DC1,DC=mondomaine,DC=loc")
#Region ### START Koda GUI section ### Form=c:\install\passwordchanger\dialogfensterv1.kxf
$Form1_1 = GUICreate("Reset Password pour Domaine Groupe", 633, 506, -1, -1, BitOR($WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS))
$Label1 = GUICtrlCreateLabel("Bienvenue!", 8, 8, 154, 33)
GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Vous pouvez changer votre mot de passe du domain,8, 48, 589, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Group1 = GUICtrlCreateGroup(" Login Domain ", 8, 80, 617, 107)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Nom d'Utilisateur :", 24, 115, 188, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
;$Label4 = GUICtrlCreateLabel("Nom d'Utilisateur Outlook:", 24, 163, 188, 24)
;GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$InputBenutzernameSA = GUICtrlCreateInput($BenutzernameALT, 264, 112, 337, 31)
GUICtrlSetFont(-1, 16, 400, 0, "Courier New")
GUICtrlSetState(-1, $GUI_ENABLE)
;$InputBenutzernameACHIM = GUICtrlCreateInput($BenutzernameALT, 264, 160, 337, 31)
;GUICtrlSetFont(-1, 16, 400, 0, "Courier New")
;GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup(" Définir mot de passe ", 8, 232, 617, 169)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$InputPasswort1 = GUICtrlCreateInput("", 264, 264, 337, 31, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 16, 400, 0, "Courier New")
$InputPasswort2 = GUICtrlCreateInput("", 264, 312, 337, 31, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 16, 400, 0, "Courier New")
$Label7 = GUICtrlCreateLabel("Nouveau Mot De Passe:", 24, 267, 188, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Label5 = GUICtrlCreateLabel("Répéter le mot de passe:", 24, 315, 188, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Label6 = GUICtrlCreateLabel("Votre mot de passe doit comporter au minimum 8 caractères et doit contenir 3 types de", 16, 352, 549, 20, $SS_CENTER)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$Label8 = GUICtrlCreateLabel("caractères parmi les 4 types suivants: masjuscule, minuscule,chiffre, caractères spéciaux:", 16, 368, 550, 20, $SS_CENTER)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$Label9 = 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")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ButtonPasswortSetzen = GUICtrlCreateButton("Définir mot de passe", 8, 456, 297, 41, $WS_GROUP)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$ButtonAbbrechen = GUICtrlCreateButton("Quitter", 328, 456, 297, 41, $WS_GROUP)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Fehlermeldungen = 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
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ButtonAbbrechen
Exit
Case $ButtonPasswortSetzen
Global $BenutzernameALT = GUICtrlRead($InputBenutzernameSA)
$BenutzernameALT = _AD_SamAccountNameToFQDN($BenutzernameALT)
$Passwort1 = GUICtrlRead($InputPasswort1)
$Passwort2 = GUICtrlRead($InputPasswort2)
;Test 1: stimmen die beiden Passwörter überein
If $Passwort1 <> $Passwort2 Then
GUICtrlSetData($Fehlermeldungen,"Les mots de passe ne correspondent pas!")
GUICtrlSetState($Fehlermeldungen,$GUI_SHOW)
ContinueCase
EndIf
;Test 2: Ist das Passwort lang genug? 8 Zeichen sind minimum
If StringLen($Passwort1) < 8 Then
GUICtrlSetData($Fehlermeldungen,"Mot de passe est trop court! Au moins HUIT caractères!")
GUICtrlSetState($Fehlermeldungen,$GUI_SHOW)
ContinueCase
EndIf
;Test 3: Ist eine Zahl enthalten?
If StringRegExp($Passwort1,"[0-9]",0) = 0 Then
GUICtrlSetData($Fehlermeldungen,"Pas de chiffre défini dans le mot de passe!")
GUICtrlSetState($Fehlermeldungen,$GUI_SHOW)
ContinueCase
EndIf
;Test 4: Ist ein Kleinbuchstabe enthalten?
If StringRegExp($Passwort1,"[a-z]",0) = 0 Then
GUICtrlSetData($Fehlermeldungen,"Aucune lettre minuscule (a-z) contient mot de passe!")
GUICtrlSetState($Fehlermeldungen,$GUI_SHOW)
ContinueCase
EndIf
;Test 5: Ist ein Grossbuchstabe enthalten?
If StringRegExp($Passwort1,"[A-Z]",0) = 0 Then
GUICtrlSetData($Fehlermeldungen,"Aucune lettre majuscule (A-Z) contient mot de passe!")
GUICtrlSetState($Fehlermeldungen,$GUI_SHOW)
ContinueCase
EndIf
;Wenn wir bis hierher kommen ist alles in Ordnung - ContinueCase würde uns sonst überspingen
GUICtrlSetData($Fehlermeldungen,"Modification Mot de Passe ENCOURS!")
GUICtrlSetBkColor($Fehlermeldungen,0x00DD00) ;Contexte vert au lieu de rouge
GUICtrlSetColor($Fehlermeldungen, 0x000000) ;Font couleur noire au lieu de jaune
GUICtrlSetState($Fehlermeldungen,$GUI_SHOW) ;Indicateurs (précédemment invisible)
GUICtrlSetState ($ButtonPasswortSetzen,$GUI_DISABLE) ; Schaltfäche für Kennwort ändern deaktivieren
Sleep (2000) ; Kunstpause
GUICtrlSetData($Fehlermeldungen,"Definissez maintenant le Mot de passe ..... ")
; RegWrite("HKEY_CURRENT_USER\Software\Sysinternals\PsPasswd", "EulaAccepted", "REG_DWORD", "1")
;Nun der leichte Teil - passwd aufrufen:
;;;$Rueckgabewert = RunWait ($Pfadpspasswd & " \\" & $DomainControllerZielDomain & " -u " & $AdminBenutzer & " -p " & $AdminBenutzerPasswort & " " & $BenutzernameNEU & " " & $Passwort1,@WindowsDir,@SW_HIDE)
; Set the password
;$Rueckgabewert = 0
;MsgBox(0,"Rückgabewert",$Rueckgabewert)
Global $iValue = _AD_SetPassword($BenutzernameALT, $Passwort1)
If $Rueckgabewert = 0 Then
GUICtrlSetData ($Fehlermeldungen,"Mot de passe a été changé avec succès!")
GUICtrlSetData ($ButtonAbbrechen,"QUITTER")
Else
GUICtrlSetData($Fehlermeldungen,"Mot de passe n'a pas pu être modifié !")
GUICtrlSetBkColor($Fehlermeldungen,0xFF00) ;Hintergrund auf Rot
GUICtrlSetColor($Fehlermeldungen, 0xFFFF00) ;Schriftfarbe Gelb
GUICtrlSetState ($ButtonPasswortSetzen,$GUI_ENABLE)
EndIf
_AD_Close()
EndSwitch
WEnd
Exit
Merci


