AD Password Expiration

  • hallo habe ein Script gefunden was auch super läuft bloss einen fehler hat mit Password Expiration da er mit 90 rechnet wo kann ich das auf 30 tage umstellen?
    er scheint ja die info nicht vom AD zu holen da die passwörter bei und alle 30 tage ablaufen kann mir jemand helfen mit dem BUG? ;)
    und mir sagen wie er das berechnet?

    Spoiler anzeigen
    [autoit]

    ; ----------------------------------------------------------------------------
    ;
    ; AutoIt Version: 3.1.0
    ; Author: A.N.Other <[email='myemail@nowhere.com'][/email]>
    ;
    ; Script Function:
    ; Template AutoIt script.
    ;
    ; ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ; Script Start - Add your code below here

    [/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>
    #include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    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 $manager
    Dim $mgr
    Dim $title
    Dim $pwdexpires
    $username = InputBox("Username", "Please input a username:")
    If @error Then Exit
    $oMyError = ObjEvent("AutoIt.Error", "ComError")
    $objRootDSE = ObjGet("LDAP://RootDSE")
    If @error Then
    MsgBox(0, 'username', 'Username does not exist or not able to communicate with ' & @LogonDomain)
    Else
    ; DNS domain name.
    $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, 'username', 'Username does not exist or not able to communicate with ' & @LogonDomain)
    Else
    Call("Displayinfo")

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    EndIf
    $UserObj = ""
    $oMyError = ObjEvent("AutoIt.Error", "")
    ;COM Error function
    Func ComError()
    If IsObj($oMyError) Then
    $HexNumber = Hex($oMyError.number, 8)
    SetError($HexNumber)
    Else
    SetError(1)
    EndIf
    Return 0
    EndFunc ;==>ComError

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Displayinfo()
    GUICreate("Active Directory Information", 500, 600, 300, 300)

    GUICtrlCreateLabel("Username: ", 10, 10, 60, 20)
    GUICtrlCreateLabel("First Name: ", 10, 30, 60, 20)
    GUICtrlCreateLabel("Last Name: ", 200, 30, 60, 20)
    GUICtrlCreateLabel("Display Name: ", 10, 50, 100, 20)
    GUICtrlCreateLabel("Title: ", 10, 70, 100, 20)
    GUICtrlCreateLabel("Manager: ", 10, 90, 100, 20)
    GUICtrlCreateLabel("Description: ", 10, 150, 100, 20)
    GUICtrlCreateLabel("Office: ", 10, 190, 60, 20)
    GUICtrlCreateLabel("Department: ", 10, 250, 100, 20)
    GUICtrlCreateLabel("Telephone Number: ", 10, 290, 90, 40)
    GUICtrlCreateLabel("Mobile Number: ", 10, 320, 100, 20)
    GUICtrlCreateLabel("Home Number: ", 10, 350, 100, 20)
    GUICtrlCreateLabel("Email Address: ", 10, 370, 100, 20)
    GUICtrlCreateLabel("Logon Script: ", 10, 410, 100, 20)
    GUICtrlCreateLabel("Account:", 10, 430, 100, 20)
    GUICtrlCreateLabel("Number of bad logon attempts since last reset: ", 310, 420, 120, 40)
    GUICtrlCreateLabel("Password Last Changed: ", 10, 460, 100, 40)
    GUICtrlCreateLabel("90 Day Password Expiration: ", 10, 490, 100, 40)
    GUICtrlCreateLabel("Last Logon: ", 10, 540, 100, 20)

    $font = "Tahoma"
    GUISetFont(9, 600, $font) ; will display underlined characters
    $unlock = GUICtrlCreateButton("UNLOCK Account", 180, 425, 120, 25)
    GUICtrlSetState($unlock, $Gui_Disable)
    GUICtrlCreateLabel('' & $username, 100, 10, 100, 20)
    GUICtrlSetColor(-1, 0x0000CC) ; Blue
    GUICtrlCreateLabel('' & $UserObj.FirstName, 100, 30, 100, 20)
    GUICtrlCreateLabel('' & $UserObj.LastName, 300, 30, 100, 20)
    GUICtrlCreateLabel('' & $UserObj.FullName, 100, 50, 300, 20)
    GUICtrlCreateLabel('' & $UserObj.Title, 100, 70, 100, 20)
    $title = GUICtrlRead($title)
    If $title = 0 Then
    GUICtrlCreateLabel('', 100, 70, 100, 20)
    EndIf

    $mgr = GUICtrlCreateLabel('' & $UserObj.Manager, 100, 90, 400, 70)
    $mgrvalue = GUICtrlRead($mgr)
    $mgrsplit = StringSplit("" & $mgrvalue, ",")
    $manager = StringTrimLeft('' & $mgrsplit[1], 3)
    GUICtrlCreateLabel('' & $manager, 100, 90, 400, 70)
    GUICtrlCreateLabel('' & $UserObj.Description, 100, 150, 300, 40)
    GUICtrlCreateLabel('' & $UserObj.physicalDeliveryOfficeName, 100, 190, 100, 50)
    GUICtrlCreateLabel('' & $UserObj.Department, 100, 250, 200, 20)
    GUICtrlCreateLabel('' & $UserObj.TelephoneNumber, 100, 300, 250, 20)
    GUICtrlCreateLabel('' & $UserObj.TelephoneMobile, 100, 320, 250, 20)
    GUICtrlCreateLabel('' & $UserObj.TelephoneHome, 120, 350, 250, 20)
    GUICtrlCreateLabel('' & $UserObj.EmailAddress, 100, 370, 300, 20)
    GUICtrlCreateLabel('' & $UserObj.LoginScript, 100, 410, 200, 15)
    $userlocked = GUICtrlCreateLabel("?????", 100, 430, 80, 15)
    If Not $UserObj.IsAccountLocked Then
    GUICtrlSetData($userlocked,"NOT Locked")
    GUICtrlSetBkColor($userlocked, 0x00ff00);Green
    GUICtrlSetState($unlock, $Gui_Disable)
    Else
    GUICtrlSetData($userlocked,"Locked")
    GUICtrlSetBkColor($userlocked, 0xff0000) ; Red
    GUICtrlSetState($unlock, $Gui_Enable)
    EndIf
    $lastchange = $UserObj.PasswordLastChanged
    $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, 100, 460, 150, 20)
    $pwdexpires = StringMid($lastchange, 5, 2) + 3 & "/" & StringMid($lastchange, 7, 2) & "/" & StringMid($lastchange, 1, 4)
    GUICtrlCreateLabel($pwdexpires & ' ' & $Time, 100, 490, 150, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $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, 100, 540, 150, 20)
    $badlogin = GUICtrlCreateLabel("" & $UserObj.BadLoginCount, 430, 430, 20, 15)
    If GUICtrlRead($badlogin) = 0 Then
    GUICtrlSetBkColor(-1, 0x00ff00);Green
    Else
    GUICtrlSetBkColor(-1, 0xff0000) ; Red
    EndIf

    GUISetState()

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $unlock
    If $UserObj.IsAccountLocked Then
    $UserObj.IsAccountLocked = False
    $UserObj.SetInfo
    Sleep(500)
    If Not $UserObj.IsAccountLocked Then
    GUICtrlSetData($userlocked,"NOT Locked")
    GUICtrlSetBkColor($userlocked, 0x00ff00);Green
    GUICtrlSetState($unlock, $Gui_Disable)
    Else
    GUICtrlSetData($userlocked,"Locked")
    GUICtrlSetBkColor($userlocked, 0xff0000) ; Red
    GUICtrlSetState($unlock, $Gui_Enable)
    EndIf
    GUICtrlSetData($badlogin,$UserObj.BadLoginCount)
    If GUICtrlRead($badlogin) = 0 Then
    GUICtrlSetBkColor(-1, 0x00ff00);Green
    Else
    GUICtrlSetBkColor(-1, 0xff0000) ; Red
    EndIf
    EndIf
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd


    EndFunc ;==>Displayinfo

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hey ich versuche es echt zu verstehen leider ist es bei mir so dunkel, kannst du mir noch ein tipp geben?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • du hast nicht das gemeint oder?

    [autoit]

    $pwdexpires = $date ("d", 30, $username.PasswordLastChanged)

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hmm, versuch mal das: (von hier)

    [autoit]

    $username.PasswordExpirationDate

    [/autoit]


    Und das aus dem Beispielskript sollte etwa so aussehen:

    Spoiler anzeigen
    [autoit]

    $oDomain = ObjGet("LDAP://" & @LogonDomain)
    $maxPwdAge = $oDomain.Get("maxPwdAge")

    [/autoit] [autoit][/autoit] [autoit]

    ;'========================================
    ;' Calculate the number of days that are
    ;' held in this value.
    ;'========================================
    ConsoleWrite("Maximum Password Age: " & $maxPwdAge & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    ;'========================================
    ;' Add the number of days to the last time
    ;' the password was set.
    ;'========================================
    $whenPasswordExpires = _DateAdd("d", $numDays, _ADDate($UserObj.PasswordLastChanged))


    Func _ADDate($Date)
    Return StringRegExpReplace($Date, "(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)", "\1/\2/\3 \4:\5:\6")
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von progandy (8. Juni 2009 um 11:39)

  • ahh jaaa ok ??? ?(
    jetzt habe ich noch mehr fragezeichen als vorher?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Warum? Hab gerade bei auf der Dokuseite gefunden, dass der Wert PasswordExpirationDate von $UserObj das ablaufdatum angibt als String im Format YYYYMMDDHHMMSS ;)

  • Ja da ist es gut beschrieben aber wolle wie auf position 1 dieses infofenster nutzen wo auch alle anderen informationen zum user stehen.
    kannst du mir am script in Position 1 ein tipp geben und helfen würde mich sehr freuen ;)
    ich stelle ja auch nicht mehr soviele fragen wie am anfang ;)

    Edit:
    wäre für jedehilfe sehr dankbar komme einfach nicht weiter???

    bernd670: Beiträge zusammengefasst!

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von bernd670 (13. Juni 2009 um 19:26)

  • ...

    Spoiler anzeigen
    [autoit]

    ; ----------------------------------------------------------------------------
    ;
    ; AutoIt Version: 3.1.0
    ; Author: A.N.Other <[email='myemail@nowhere.com'][/email]>
    ;
    ; Script Function:
    ; Template AutoIt script.
    ;
    ; ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ; Script Start - Add your code below here

    [/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>
    #include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    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 $manager
    Dim $mgr
    Dim $title
    Dim $pwdexpires
    $username = InputBox("Username", "Please input a username:")
    If @error Then Exit
    $oMyError = ObjEvent("AutoIt.Error", "ComError")
    $objRootDSE = ObjGet("LDAP://RootDSE")
    If @error Then
    MsgBox(0, 'username', 'Username does not exist or not able to communicate with ' & @LogonDomain)
    Else
    ; DNS domain name.
    $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, 'username', 'Username does not exist or not able to communicate with ' & @LogonDomain)
    Else
    Call("Displayinfo")

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    EndIf
    $UserObj = ""
    $oMyError = ObjEvent("AutoIt.Error", "")
    ;COM Error function
    Func ComError()
    If IsObj($oMyError) Then
    $HexNumber = Hex($oMyError.number, 8)
    SetError($HexNumber)
    Else
    SetError(1)
    EndIf
    Return 0
    EndFunc ;==>ComError

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Displayinfo()
    GUICreate("Active Directory Information", 500, 600, 300, 300)

    GUICtrlCreateLabel("Username: ", 10, 10, 60, 20)
    GUICtrlCreateLabel("First Name: ", 10, 30, 60, 20)
    GUICtrlCreateLabel("Last Name: ", 200, 30, 60, 20)
    GUICtrlCreateLabel("Display Name: ", 10, 50, 100, 20)
    GUICtrlCreateLabel("Title: ", 10, 70, 100, 20)
    GUICtrlCreateLabel("Manager: ", 10, 90, 100, 20)
    GUICtrlCreateLabel("Description: ", 10, 150, 100, 20)
    GUICtrlCreateLabel("Office: ", 10, 190, 60, 20)
    GUICtrlCreateLabel("Department: ", 10, 250, 100, 20)
    GUICtrlCreateLabel("Telephone Number: ", 10, 290, 90, 40)
    GUICtrlCreateLabel("Mobile Number: ", 10, 320, 100, 20)
    GUICtrlCreateLabel("Home Number: ", 10, 350, 100, 20)
    GUICtrlCreateLabel("Email Address: ", 10, 370, 100, 20)
    GUICtrlCreateLabel("Logon Script: ", 10, 410, 100, 20)
    GUICtrlCreateLabel("Account:", 10, 430, 100, 20)
    GUICtrlCreateLabel("Number of bad logon attempts since last reset: ", 310, 420, 120, 40)
    GUICtrlCreateLabel("Password Last Changed: ", 10, 460, 100, 40)
    GUICtrlCreateLabel("Password Expiration: ", 10, 490, 100, 40)
    GUICtrlCreateLabel("Last Logon: ", 10, 540, 100, 20)

    $font = "Tahoma"
    GUISetFont(9, 600, $font) ; will display underlined characters
    $unlock = GUICtrlCreateButton("UNLOCK Account", 180, 425, 120, 25)
    GUICtrlSetState($unlock, $Gui_Disable)
    GUICtrlCreateLabel('' & $username, 100, 10, 100, 20)
    GUICtrlSetColor(-1, 0x0000CC) ; Blue
    GUICtrlCreateLabel('' & $UserObj.FirstName, 100, 30, 100, 20)
    GUICtrlCreateLabel('' & $UserObj.LastName, 300, 30, 100, 20)
    GUICtrlCreateLabel('' & $UserObj.FullName, 100, 50, 300, 20)
    GUICtrlCreateLabel('' & $UserObj.Title, 100, 70, 100, 20)
    $title = GUICtrlRead($title)
    If $title = 0 Then
    GUICtrlCreateLabel('', 100, 70, 100, 20)
    EndIf

    $mgr = GUICtrlCreateLabel('' & $UserObj.Manager, 100, 90, 400, 70)
    $mgrvalue = GUICtrlRead($mgr)
    $mgrsplit = StringSplit("" & $mgrvalue, ",")
    $manager = StringTrimLeft('' & $mgrsplit[1], 3)
    GUICtrlCreateLabel('' & $manager, 100, 90, 400, 70)
    GUICtrlCreateLabel('' & $UserObj.Description, 100, 150, 300, 40)
    GUICtrlCreateLabel('' & $UserObj.physicalDeliveryOfficeName, 100, 190, 100, 50)
    GUICtrlCreateLabel('' & $UserObj.Department, 100, 250, 200, 20)
    GUICtrlCreateLabel('' & $UserObj.TelephoneNumber, 100, 300, 250, 20)
    GUICtrlCreateLabel('' & $UserObj.TelephoneMobile, 100, 320, 250, 20)
    GUICtrlCreateLabel('' & $UserObj.TelephoneHome, 120, 350, 250, 20)
    GUICtrlCreateLabel('' & $UserObj.EmailAddress, 100, 370, 300, 20)
    GUICtrlCreateLabel('' & $UserObj.LoginScript, 100, 410, 200, 15)
    $userlocked = GUICtrlCreateLabel("?????", 100, 430, 80, 15)
    If Not $UserObj.IsAccountLocked Then
    GUICtrlSetData($userlocked,"NOT Locked")
    GUICtrlSetBkColor($userlocked, 0x00ff00);Green
    GUICtrlSetState($unlock, $Gui_Disable)
    Else
    GUICtrlSetData($userlocked,"Locked")
    GUICtrlSetBkColor($userlocked, 0xff0000) ; Red
    GUICtrlSetState($unlock, $Gui_Enable)
    EndIf
    $lastchange = $UserObj.PasswordLastChanged
    GUICtrlCreateLabel(_ADDate($lastchange), 100, 460, 150, 20)
    $pwdexpires = $UserObj.PasswordExpirationDate
    GUICtrlCreateLabel(_ADDate($pwdexpires), 100, 490, 150, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $lastlogin = $UserObj.LastLogin

    GUICtrlCreateLabel(_ADDate($lastlogin), 100, 540, 150, 20)
    $badlogin = GUICtrlCreateLabel("" & $UserObj.BadLoginCount, 430, 430, 20, 15)
    If GUICtrlRead($badlogin) = 0 Then
    GUICtrlSetBkColor(-1, 0x00ff00);Green
    Else
    GUICtrlSetBkColor(-1, 0xff0000) ; Red
    EndIf

    GUISetState()

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $unlock
    If $UserObj.IsAccountLocked Then
    $UserObj.IsAccountLocked = False
    $UserObj.SetInfo
    Sleep(500)
    If Not $UserObj.IsAccountLocked Then
    GUICtrlSetData($userlocked,"NOT Locked")
    GUICtrlSetBkColor($userlocked, 0x00ff00);Green
    GUICtrlSetState($unlock, $Gui_Disable)
    Else
    GUICtrlSetData($userlocked,"Locked")
    GUICtrlSetBkColor($userlocked, 0xff0000) ; Red
    GUICtrlSetState($unlock, $Gui_Enable)
    EndIf
    GUICtrlSetData($badlogin,$UserObj.BadLoginCount)
    If GUICtrlRead($badlogin) = 0 Then
    GUICtrlSetBkColor(-1, 0x00ff00);Green
    Else
    GUICtrlSetBkColor(-1, 0xff0000) ; Red
    EndIf
    EndIf
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd


    EndFunc ;==>Displayinfo
    Func _ADDate($Date)
    Return StringRegExpReplace($Date, "(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)", "\1/\2/\3 \4:\5:\6")
    EndFunc

    [/autoit]
  • Danke, ;)
    Password Expiration ist jetzt nicht zu sehen ist was falsch??

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • a) es gibt vielleicht kein PW-Expiration
    b) ersetze mal

    [autoit]

    $pwdexpires = $UserObj.PasswordExpirationDate

    [/autoit]

    mit

    [autoit]

    $oDomain = ObjGet("LDAP://" & @LogonDomain)
    $maxPwdAge = $oDomain.Get("maxPwdAge")
    $pwdexpires = _DateAdd("d", $numDays, _ADDate($UserObj.PasswordLastChanged))

    [/autoit]


    c) ich kann LDAP nicht testen

  • Hoffe ich habe das so gemacht wie du es beschrieben hast ;)

    kriege den fehler:
    *.au3(139,41) : WARNING: $numDays: possibly used before declaration.
    $pwdexpires = _DateAdd("d", $numDays,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    *.au3(139,41) : ERROR: $numDays: undeclared global variable.
    $pwdexpires = _DateAdd("d", $numDays,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    *.au3(139,80) : ERROR: _DateAdd(): undefined function.
    $pwdexpires = _DateAdd("d", $numDays, _ADDate($UserObj.PasswordLastChanged))
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    *.au3 - 2 error(s), 1 warning(s)

    Und so sieht mein script aus...

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.0.0
    Author: myName

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Template AutoIt script.

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ; Script Start - Add your code below here

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ;
    ; AutoIt Version: 3.1.0
    ; Author: A.N.Other <[email='myemail@nowhere.com'][/email]>
    ;
    ; Script Function:
    ; Template AutoIt script.
    ;
    ; ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ; Script Start - Add your code below here

    [/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>
    #include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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 $manager
    Dim $mgr
    Dim $title
    Dim $pwdexpires
    $username = InputBox("Username", "Please input a username:")
    If @error Then Exit
    $oMyError = ObjEvent("AutoIt.Error", "ComError")
    $objRootDSE = ObjGet("LDAP://RootDSE")
    If @error Then
    MsgBox(0, 'username', 'Username does not exist or not able to communicate with ' & @LogonDomain)
    Else
    ; DNS domain name.
    $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, 'username', 'Username does not exist or not able to communicate with ' & @LogonDomain)
    Else
    Call("Displayinfo")

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    EndIf
    $UserObj = ""
    $oMyError = ObjEvent("AutoIt.Error", "")
    ;COM Error function
    Func ComError()
    If IsObj($oMyError) Then
    $HexNumber = Hex($oMyError.number, 8)
    SetError($HexNumber)
    Else
    SetError(1)
    EndIf
    Return 0
    EndFunc ;==>ComError

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Displayinfo()
    GUICreate("Active Directory Information", 500, 600, 300, 300)

    GUICtrlCreateLabel("Username: ", 10, 10, 60, 20)
    GUICtrlCreateLabel("First Name: ", 10, 30, 60, 20)
    GUICtrlCreateLabel("Last Name: ", 200, 30, 60, 20)
    GUICtrlCreateLabel("Display Name: ", 10, 50, 100, 20)
    GUICtrlCreateLabel("Title: ", 10, 70, 100, 20)
    GUICtrlCreateLabel("Manager: ", 10, 90, 100, 20)
    GUICtrlCreateLabel("Description: ", 10, 150, 100, 20)
    GUICtrlCreateLabel("Office: ", 10, 190, 60, 20)
    GUICtrlCreateLabel("Department: ", 10, 250, 100, 20)
    GUICtrlCreateLabel("Telephone Number: ", 10, 290, 90, 40)
    GUICtrlCreateLabel("Mobile Number: ", 10, 320, 100, 20)
    GUICtrlCreateLabel("Home Number: ", 10, 350, 100, 20)
    GUICtrlCreateLabel("Email Address: ", 10, 370, 100, 20)
    GUICtrlCreateLabel("Logon Script: ", 10, 410, 100, 20)
    GUICtrlCreateLabel("Account:", 10, 430, 100, 20)
    GUICtrlCreateLabel("Number of bad logon attempts since last reset: ", 310, 420, 120, 40)
    GUICtrlCreateLabel("Password Last Changed: ", 10, 460, 100, 40)
    GUICtrlCreateLabel("Password Expiration: ", 10, 490, 100, 40)
    GUICtrlCreateLabel("Last Logon: ", 10, 540, 100, 20)

    $font = "Tahoma"
    GUISetFont(9, 600, $font) ; will display underlined characters
    $unlock = GUICtrlCreateButton("UNLOCK Account", 180, 425, 120, 25)
    GUICtrlSetState($unlock, $Gui_Disable)
    GUICtrlCreateLabel('' & $username, 100, 10, 100, 20)
    GUICtrlSetColor(-1, 0x0000CC) ; Blue
    GUICtrlCreateLabel('' & $UserObj.FirstName, 100, 30, 100, 20)
    GUICtrlCreateLabel('' & $UserObj.LastName, 300, 30, 100, 20)
    GUICtrlCreateLabel('' & $UserObj.FullName, 100, 50, 300, 20)
    GUICtrlCreateLabel('' & $UserObj.Title, 100, 70, 100, 20)
    $title = GUICtrlRead($title)
    If $title = 0 Then
    GUICtrlCreateLabel('', 100, 70, 100, 20)
    EndIf

    $mgr = GUICtrlCreateLabel('' & $UserObj.Manager, 100, 90, 400, 70)
    $mgrvalue = GUICtrlRead($mgr)
    $mgrsplit = StringSplit("" & $mgrvalue, ",")
    $manager = StringTrimLeft('' & $mgrsplit[1], 3)
    GUICtrlCreateLabel('' & $manager, 100, 90, 400, 70)
    GUICtrlCreateLabel('' & $UserObj.Description, 100, 150, 300, 40)
    GUICtrlCreateLabel('' & $UserObj.physicalDeliveryOfficeName, 100, 190, 100, 50)
    GUICtrlCreateLabel('' & $UserObj.Department, 100, 250, 200, 20)
    GUICtrlCreateLabel('' & $UserObj.TelephoneNumber, 100, 300, 250, 20)
    GUICtrlCreateLabel('' & $UserObj.TelephoneMobile, 100, 320, 250, 20)
    GUICtrlCreateLabel('' & $UserObj.TelephoneHome, 120, 350, 250, 20)
    GUICtrlCreateLabel('' & $UserObj.EmailAddress, 100, 370, 300, 20)
    GUICtrlCreateLabel('' & $UserObj.LoginScript, 100, 410, 200, 15)
    $userlocked = GUICtrlCreateLabel("?????", 100, 430, 80, 15)
    If Not $UserObj.IsAccountLocked Then
    GUICtrlSetData($userlocked,"NOT Locked")
    GUICtrlSetBkColor($userlocked, 0x00ff00);Green
    GUICtrlSetState($unlock, $Gui_Disable)
    Else
    GUICtrlSetData($userlocked,"Locked")
    GUICtrlSetBkColor($userlocked, 0xff0000) ; Red
    GUICtrlSetState($unlock, $Gui_Enable)
    EndIf
    $lastchange = $UserObj.PasswordLastChanged
    GUICtrlCreateLabel(_ADDate($lastchange), 100, 460, 150, 20)
    $oDomain = ObjGet("LDAP://" & @LogonDomain)
    $maxPwdAge = $oDomain.Get("maxPwdAge")
    $pwdexpires = _DateAdd("d", $numDays, _ADDate($UserObj.PasswordLastChanged))
    GUICtrlCreateLabel(_ADDate($pwdexpires), 100, 490, 150, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $lastlogin = $UserObj.LastLogin

    GUICtrlCreateLabel(_ADDate($lastlogin), 100, 540, 150, 20)
    $badlogin = GUICtrlCreateLabel("" & $UserObj.BadLoginCount, 430, 430, 20, 15)
    If GUICtrlRead($badlogin) = 0 Then
    GUICtrlSetBkColor(-1, 0x00ff00);Green
    Else
    GUICtrlSetBkColor(-1, 0xff0000) ; Red
    EndIf

    GUISetState()

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $unlock
    If $UserObj.IsAccountLocked Then
    $UserObj.IsAccountLocked = False
    $UserObj.SetInfo
    Sleep(500)
    If Not $UserObj.IsAccountLocked Then
    GUICtrlSetData($userlocked,"NOT Locked")
    GUICtrlSetBkColor($userlocked, 0x00ff00);Green
    GUICtrlSetState($unlock, $Gui_Disable)
    Else
    GUICtrlSetData($userlocked,"Locked")
    GUICtrlSetBkColor($userlocked, 0xff0000) ; Red
    GUICtrlSetState($unlock, $Gui_Enable)
    EndIf
    GUICtrlSetData($badlogin,$UserObj.BadLoginCount)
    If GUICtrlRead($badlogin) = 0 Then
    GUICtrlSetBkColor(-1, 0x00ff00);Green
    Else
    GUICtrlSetBkColor(-1, 0xff0000) ; Red
    EndIf
    EndIf
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd


    EndFunc ;==>Displayinfo
    Func _ADDate($Date)
    Return StringRegExpReplace($Date, "(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)", "\1/\2/\3 \4:\5:\6")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • zu ERROR: $numDays: undeclared global variable.: das sollte $maxPwdAge sein
    zu ERROR: _DateAdd(): undefined function.: welches Include wird wohl benötigt? Etwas solltest du auch selber denken :pinch:

  • Das habe ich ja bereits gemacht habe die include date.au3 genommen

    dann kommt folgende meldung':
    *.au3(141,41) : WARNING: $numDays: possibly used before declaration.
    $pwdexpires = _DateAdd("d", $numDays,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    *.au3(141,41) : ERROR: $numDays: undeclared global variable.
    $pwdexpires = _DateAdd("d", $numDays,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    *.au3 - 1 error(s), 1 warning(s)

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    • Offizieller Beitrag

    Bitte, einfach die Constante $ExpireDays anpassen!

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Misc.au3>
    #include <Date.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Const $ExpireDays = 30
    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 $manager
    Dim $mgr
    Dim $title
    Dim $pwdexpires
    $username = InputBox("Username", "Please input a username:")
    If @error Then Exit
    $oMyError = ObjEvent("AutoIt.Error", "ComError")
    $objRootDSE = ObjGet("LDAP://RootDSE")
    If @error Then
    MsgBox(0, 'username', 'Username does not exist or not able to communicate with ' & @LogonDomain)
    Else
    ; DNS domain name.
    $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, 'username', 'Username does not exist or not able to communicate with ' & @LogonDomain)
    Else
    Call("Displayinfo")

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    EndIf
    $UserObj = ""
    $oMyError = ObjEvent("AutoIt.Error", "")
    ;COM Error function
    Func ComError()
    If IsObj($oMyError) Then
    $HexNumber = Hex($oMyError.number, 8)
    SetError($HexNumber)
    Else
    SetError(1)
    EndIf
    Return 0
    EndFunc ;==>ComError

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Displayinfo()
    GUICreate("Active Directory Information", 500, 600, 300, 300)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Username: ", 10, 10, 60, 20)
    GUICtrlCreateLabel("First Name: ", 10, 30, 60, 20)
    GUICtrlCreateLabel("Last Name: ", 200, 30, 60, 20)
    GUICtrlCreateLabel("Display Name: ", 10, 50, 100, 20)
    GUICtrlCreateLabel("Title: ", 10, 70, 100, 20)
    GUICtrlCreateLabel("Manager: ", 10, 90, 100, 20)
    GUICtrlCreateLabel("Description: ", 10, 150, 100, 20)
    GUICtrlCreateLabel("Office: ", 10, 190, 60, 20)
    GUICtrlCreateLabel("Department: ", 10, 250, 100, 20)
    GUICtrlCreateLabel("Telephone Number: ", 10, 290, 90, 40)
    GUICtrlCreateLabel("Mobile Number: ", 10, 320, 100, 20)
    GUICtrlCreateLabel("Home Number: ", 10, 350, 100, 20)
    GUICtrlCreateLabel("Email Address: ", 10, 370, 100, 20)
    GUICtrlCreateLabel("Logon Script: ", 10, 410, 100, 20)
    GUICtrlCreateLabel("Account:", 10, 430, 100, 20)
    GUICtrlCreateLabel("Number of bad logon attempts since last reset: ", 310, 420, 120, 40)
    GUICtrlCreateLabel("Password Last Changed: ", 10, 460, 100, 40)
    GUICtrlCreateLabel($ExpireDays & " Day Password Expiration: ", 10, 490, 100, 40)
    GUICtrlCreateLabel("Last Logon: ", 10, 540, 100, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $font = "Tahoma"
    GUISetFont(9, 600, $font) ; will display underlined characters
    $unlock = GUICtrlCreateButton("UNLOCK Account", 180, 425, 120, 25)
    GUICtrlSetState($unlock, $Gui_Disable)
    GUICtrlCreateLabel('' & $username, 100, 10, 100, 20)
    GUICtrlSetColor(-1, 0x0000CC) ; Blue
    GUICtrlCreateLabel('' & $UserObj.FirstName, 100, 30, 100, 20)
    GUICtrlCreateLabel('' & $UserObj.LastName, 300, 30, 100, 20)
    GUICtrlCreateLabel('' & $UserObj.FullName, 100, 50, 300, 20)
    GUICtrlCreateLabel('' & $UserObj.Title, 100, 70, 100, 20)
    $title = GUICtrlRead($title)
    If $title = 0 Then
    GUICtrlCreateLabel('', 100, 70, 100, 20)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $mgr = GUICtrlCreateLabel('' & $UserObj.Manager, 100, 90, 400, 70)
    $mgrvalue = GUICtrlRead($mgr)
    $mgrsplit = StringSplit("" & $mgrvalue, ",")
    $manager = StringTrimLeft('' & $mgrsplit[1], 3)
    GUICtrlCreateLabel('' & $manager, 100, 90, 400, 70)
    GUICtrlCreateLabel('' & $UserObj.Description, 100, 150, 300, 40)
    GUICtrlCreateLabel('' & $UserObj.physicalDeliveryOfficeName, 100, 190, 100, 50)
    GUICtrlCreateLabel('' & $UserObj.Department, 100, 250, 200, 20)
    GUICtrlCreateLabel('' & $UserObj.TelephoneNumber, 100, 300, 250, 20)
    GUICtrlCreateLabel('' & $UserObj.TelephoneMobile, 100, 320, 250, 20)
    GUICtrlCreateLabel('' & $UserObj.TelephoneHome, 120, 350, 250, 20)
    GUICtrlCreateLabel('' & $UserObj.EmailAddress, 100, 370, 300, 20)
    GUICtrlCreateLabel('' & $UserObj.LoginScript, 100, 410, 200, 15)
    $userlocked = GUICtrlCreateLabel("?????", 100, 430, 80, 15)
    If Not $UserObj.IsAccountLocked Then
    GUICtrlSetData($userlocked,"NOT Locked")
    GUICtrlSetBkColor($userlocked, 0x00ff00);Green
    GUICtrlSetState($unlock, $Gui_Disable)
    Else
    GUICtrlSetData($userlocked,"Locked")
    GUICtrlSetBkColor($userlocked, 0xff0000) ; Red
    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, 100, 460, 150, 20)
    $pwdexpires = StringMid($ExpireDate, 5, 2) & "/" & StringMid($ExpireDate, 7, 2) & "/" & StringMid($ExpireDate, 1, 4)
    GUICtrlCreateLabel($pwdexpires & ' ' & $Time, 100, 490, 150, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $lastlogin = $UserObj.LastLogin

    [/autoit] [autoit][/autoit] [autoit]

    $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, 100, 540, 150, 20)
    $badlogin = GUICtrlCreateLabel("" & $UserObj.BadLoginCount, 430, 430, 20, 15)
    If GUICtrlRead($badlogin) = 0 Then
    GUICtrlSetBkColor(-1, 0x00ff00);Green
    Else
    GUICtrlSetBkColor(-1, 0xff0000) ; Red
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $unlock
    If $UserObj.IsAccountLocked Then
    $UserObj.IsAccountLocked = False
    $UserObj.SetInfo
    Sleep(500)
    If Not $UserObj.IsAccountLocked Then
    GUICtrlSetData($userlocked,"NOT Locked")
    GUICtrlSetBkColor($userlocked, 0x00ff00);Green
    GUICtrlSetState($unlock, $Gui_Disable)
    Else
    GUICtrlSetData($userlocked,"Locked")
    GUICtrlSetBkColor($userlocked, 0xff0000) ; Red
    GUICtrlSetState($unlock, $Gui_Enable)
    EndIf
    GUICtrlSetData($badlogin,$UserObj.BadLoginCount)
    If GUICtrlRead($badlogin) = 0 Then
    GUICtrlSetBkColor(-1, 0x00ff00);Green
    Else
    GUICtrlSetBkColor(-1, 0xff0000) ; Red
    EndIf
    EndIf
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>Displayinfo

    [/autoit]
  • danke

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."