Hallo,
ich erstelle für unseren UHD ein Script, welches es nicht mehr notwendig macht über einen SnapIn der MMC gehen zu müssen.
Es sollen die Funktionalitäten Konto entsperren, Kennwort neu setzen und Kontooption "Benutzer muss Kennwort bei der nächsten Anmeldung ändern".
Das mit dem Konto entsprerren funktioniert nun einwandfrei. Allerdings übersteigt es meine derzeitigen Autoit-Kenntnisse noch die zwei anderen Funktionalitäten zu hinterlegen. Ich denke hier an die Vorlagen _AD_SetPasswordExpire.au3 und _AD_SetPassword.au3 (liefere ich einfach mal mit unter Codes).
Die GUI für ist schon fertig erstellt nun fehlt eben das Wisssen/Fähigkeit die beiden genannten Vorlagen mit einzubauen. Help, I need somebody help...
#include <ButtonConstants.au3>
#include <GUIConstants.au3>
#include <Misc.au3>
#include <Date.au3>
#include <WindowsConstants.au3>
; länge der Gültigkeit des Domänenkennwortes in Tagen
Const $ExpireDays = 60
; weiter
Const $ADS_NAME_INITTYPE_GC = 3
Const $ADS_NAME_TYPE_NT4 = 3
Const $ADS_NAME_TYPE_1779 = 1
Dim $unlock
Dim $mgrvalue
Dim $mgrsplit
Dim $title
Dim $manager
Dim $mgr
Dim $pwdexpires
$username = InputBox("KlauPe - Active Directory Tool-bszid", "Bitte die U-Nummer eingeben:")
If @error Then Exit
$oMyError = ObjEvent("AutoIt.Error", "ComError")
$objRootDSE = ObjGet("LDAP://RootDSE")
If @error Then
MsgBox(0, 'KlauPe - Active Directory Tool-bszid / ERROR', 'User ID existiert nicht in der Domäne ' & @LogonDomain)
Else
; DNS - schreibt die aktuelle Domäne
$objTrans = ObjCreate("NameTranslate")
$objTrans.Init ($ADS_NAME_INITTYPE_GC, "")
$objTrans.Set ($ADS_NAME_TYPE_1779, @LogonDomain)
$objTrans.Set ($ADS_NAME_TYPE_NT4, @LogonDomain & "\" & $username)
$strUserDN = $objTrans.Get ($ADS_NAME_TYPE_1779)
$UserObj = ObjGet("LDAP://" & $strUserDN)
If @error Then
MsgBox(0, 'KlauPe - Active Directory Tool-bszid / ERROR', 'User ID existiert nicht in der Domäne '& @LogonDomain & @CR & @CR &'Erstellen eines Domänenkontos über Berechtigungsvergabe notwendig!')
Else
Call("Displayinfo")
EndIf
EndIf
$UserObj = ""
$oMyError = ObjEvent("AutoIt.Error", "")
;COM Error Funktion
Func ComError()
If IsObj($oMyError) Then
$HexNumber = Hex($oMyError.number,
SetError($HexNumber)
Else
SetError(1)
EndIf
Return 0
EndFunc ;==>ComError
Func Displayinfo()
GUICreate("KlauPe - Active Directory Tool-bszid", 370, 480, 300, 300)
;Infobereich
GUICtrlCreateLabel("User ID: ", 10, 10, 60, 20)
GUICtrlCreateLabel("Vorname: ", 10, 30, 60, 20)
GUICtrlCreateLabel("Nachname: ", 10, 50, 60, 20)
GUICtrlCreateLabel("Funktionsstelle: ", 10, 90, 100, 20)
GUICtrlCreateLabel("Telefone Nummer: ", 10, 110, 90, 20)
GUICtrlCreateLabel("Konto gesperrt:", 10, 170, 100, 20)
GUICtrlCreateLabel("letzte Passwortänderung: ", 10, 210, 200, 20)
GUICtrlCreateLabel($ExpireDays & " Tage bis KW-Änderung: ", 10, 240, 200, 40)
GUICtrlCreateLabel("Letzte Anmeldung: ", 10, 270, 200, 20)
;Passwort neu vergeben
GUICtrlCreateLabel("User ID (U-Nummer):", 10, 320, 200, 20)
GUICtrlCreateLabel("Neues Passwort vergeben:", 10, 350, 200, 20)
;Kennwort bei nächster Anmeldung ändern
GUICtrlCreateLabel("KW bei nächster Anmeldung ändern:", 10, 390, 200, 20)
Global $ICheck = GUICtrlCreateCheckbox("auswählen", 200, 390, 70, 20)
GUICtrlSetState($ICheck,$GUI_CHECKED)
$font = "Verdana"
GUISetFont(9, 600, $font) ; schreibt die Info´s FETT
$unlock = GUICtrlCreateButton("ENTSPERREN", 230, 170, 120, 22)
GUICtrlSetState($unlock, $Gui_Disable)
GUICtrlCreateLabel('' & $username, 150, 10, 100, 20)
GUICtrlSetColor(-1, 0x0000CC) ; Blue
GUICtrlCreateLabel('' & $UserObj.FirstName, 150, 30, 100, 20)
GUICtrlCreateLabel('' & $UserObj.LastName, 150, 50, 250, 20)
;für Passwortänderung
Global $IUser = GUICtrlCreateInput($username, 150, 320, 200, 20)
Global $IPassword = GUICtrlCreateInput($username, 150, 350, 200, 20)
;Schaltflächen für Passwortänderung
Global $BOK = GUICtrlCreateButton("Neues Passwort setzen", 150, 430, 200, 30)
GUICtrlSetState(-1,$GUI_Focus)
$title = GUICtrlRead($title)
$mgr = GUICtrlCreateLabel('' & $UserObj.Manager, 150, 90, 400, 70)
$mgrvalue = GUICtrlRead($mgr)
$mgrsplit = StringSplit("" & $mgrvalue, ",")
GUICtrlCreateLabel('' & $UserObj.Department, 150, 90, 200, 20)
GUICtrlCreateLabel('' & $UserObj.TelephoneNumber, 150, 110, 250, 20)
$userlocked = GUICtrlCreateLabel("?????", 150, 170, 80, 20)
If Not $UserObj.IsAccountLocked Then
GUICtrlSetData($userlocked," NEIN")
GUICtrlSetBkColor($userlocked, 0x00ff00);Grün
GUICtrlSetState($unlock, $Gui_Disable)
Else
GUICtrlSetData($userlocked," JA")
GUICtrlSetBkColor($userlocked, 0xff0000) ;Rot
GUICtrlSetState($unlock, $Gui_Enable)
EndIf
$lastchange = $UserObj.PasswordLastChanged
$ExpireDate = StringReplace(_DateAdd("d", $ExpireDays, StringMid($lastchange, 1, 4) & "/" & StringMid($lastchange, 5, 2) & "/" & StringMid($lastchange, 7, 2)), "/", "")
$Date = StringMid($lastchange, 5, 2) & "/" & StringMid($lastchange, 7, 2) & "/" & StringMid($lastchange, 1, 4)
$Time = StringMid($lastchange, 9, 2) & ":" & StringMid($lastchange, 11, 2) & ":" & StringMid($lastchange, 13, 2)
GUICtrlCreateLabel($Date & " " & $Time, 150, 210, 250, 20)
$pwdexpires = StringMid($ExpireDate, 5, 2) & "/" & StringMid($ExpireDate, 7, 2) & "/" & StringMid($ExpireDate, 1, 4)
GUICtrlCreateLabel($pwdexpires & ' ' & $Time, 150, 240, 250, 20)
$lastlogin = $UserObj.LastLogin
$Date = StringMid($lastlogin, 5, 2) & "/" & StringMid($lastlogin, 7, 2) & "/" & StringMid($lastlogin, 1, 4)
$Time = StringMid($lastlogin, 9, 2) & ":" & StringMid($lastlogin, 11, 2) & ":" & StringMid($lastlogin, 13, 2)
GUICtrlCreateLabel($Date & " " & $Time, 150, 270, 250, 20)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $unlock
If $UserObj.IsAccountLocked Then
$UserObj.IsAccountLocked = False
$UserObj.SetInfo
MsgBox(0, 'KlauPe - Active Directory INFO', "Benutzerkonto wurde entsperrt!")
Exit
GUICtrlCreateLabel (""& $UserObj.IsAccountLocked, 100, 430, 10, 20)
EndIf
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
EndFunc
*****_AD_SetPasswordExpire.au3 *****
#include <AD.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
; Open Connection to the Active Directory
_AD_Open()
If @error Then Exit MsgBox(16, "Active Directory Example Skript", "Function _AD_Open encountered a problem. @error = " & @error & ", @extended = " & @extended)
#cs
Global $iReply = MsgBox(308, "KlauPe - Kontooptionen", "Mit diesem Tool kann folgende 'Kontooption' gesetzt/entfernt werden:" & @CRLF & @CRLF & _
"'Benutzer muss Kennwort bei der nächsten Anmeldung ändern'" & @CRLF & @CRLF & "Fortfahren?")
If $iReply <> 6 Then Exit
#ce
#region ### START Koda GUI section ### Form=
Global $Form = GUICreate("KlauPe - Kontooptionen", 515, 162, 251, 130)
GUICtrlCreateLabel("User ID (U-Nummer)", 8, 12, 159, 21)
Global $IUserId = GUICtrlCreateInput("", 241, 8, 259, 21)
GUICtrlCreateLabel("bei nächster Anmeldung ändern:", 8, 44, 250, 21)
Global $IRadio1 = GUICtrlCreateRadio("", 241, 40, 17, 21)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateLabel("NICHT bei nächster Anmeldung ändern:", 8, 76, 190, 21)
Global $IRadio2 = GUICtrlCreateRadio("", 241, 72, 17, 21)
Global $BOK = GUICtrlCreateButton("Option setzen", 8, 118, 130, 33)
Global $BCancel = GUICtrlCreateButton("Abbrechen", 428, 118, 73, 33)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
Global $iFunction = 0
While 1
Global $nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $BCancel
Exit
Case $BOK
Global $SUserId = GUICtrlRead($IUserId)
If GUICtrlRead($IRadio1) = $GUI_CHECKED Then $iFunction = 0
If GUICtrlRead($IRadio2) = $GUI_CHECKED Then $iFunction = -1
ExitLoop
EndSwitch
WEnd
**********************************************************************************************************************************************************************
****_AD_SetPassword.au3 ****
#include <AD.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
; Open Connection to the Active Directory
_AD_Open()
If @error Then Exit MsgBox(16, "Active Directory Example Skript", "Function _AD_Open encountered a problem. @error = " & @error & ", @extended = " & @extended)
#cs
Global $iReply = MsgBox(308, "Active Directory Functions - Example 1", "This script sets the password for a user you specify." & @CRLF & @CRLF & _
"Are you sure you want to change the Active Directory?")
If $iReply <> 6 Then Exit
#ce
; Enter user and password to change
#region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("KlauPe - Kennwortänderung", 414, 124, 251, 112)
GUICtrlCreateLabel("User ID (U-Nummer):", 8, 10, 231, 17)
GUICtrlCreateLabel("Neues Passwort:", 8, 42, 121, 17)
Global $IUser = GUICtrlCreateInput("", 241, 8, 159, 21)
Global $IPassword = GUICtrlCreateInput("", 241, 40, 159, 21)
Global $BOK = GUICtrlCreateButton("Neues Passwort setzen", 8, 72, 121, 33)
Global $BCancel = GUICtrlCreateButton("Abbrechen", 328, 72, 73, 33, BitOR($GUI_SS_DEFAULT_BUTTON, $BS_DEFPUSHBUTTON))
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 $sPassword = GUICtrlRead($IPassword)
ExitLoop
EndSwitch
WEnd
; Set the password
Global $iValue = _AD_SetPassword($sUser, $sPassword)
If $iValue = 1 Then
MsgBox(64, "KlauPe - Kennwortänderung", "Passwort für User '" & $sUser & "' wurde erfolgreich geändert!")
ElseIf @error = 1 Then
MsgBox(64, "KlauPe - Kennwortänderung", "User '" & $sUser & "' existiert nicht")
Else
MsgBox(64, "KlauPe - Kennwortänderung", "Return code '" & @error & "' from Active Directory")
EndIf
; Close Connection to the Active Directory
_AD_Close()
************************************************************************************************************************************************
Danke schoneinmal im Voraus an Euch ALLE!