Hi
ich habe hier einen Codeschnipsel von einem Vorgänger hinterlassen bekommen.
Allerdings sprengt der meinen Autoit Horizont noch.
EDIT: War der falsche Schnipsel. Jetzt stimmts.
Spoiler anzeigen
Func _GetUserAD()
Global $UserAccountControl, $samAccountName,$FirstName, $LastName, $title, $PasswordLastChanged, $IsAccountLocked, $DaysLeft,$msg,$icon ,$AnzeigeDatPwdExpires, $Counter
Local $Found = 0
$AnmeldeUser = @UserName
$LogonServer = "dc.domain.local"
[/autoit] [autoit][/autoit] [autoit]$serverName = $LogonServer
$baseStr = "DC=DOMAIN,DC=local"
$filterStr = "(&(objectCategory=Person) (objectClass=user) )"
[/autoit] [autoit][/autoit] [autoit]$ado = ObjCreate("ADODB.Connection") ; erstellt eine Instanz des Objektes ADODB.Connection
$ado.Provider = "ADSDSOObject"
$ado.Open ("ADS-Search" )
[/autoit] [autoit][/autoit] [autoit]$adoCmd = ObjCreate("ADODB.Command")
$adoCmd.ActiveConnection = $ado
$adoCmd.Properties("Page Size") = 1000
$adoCmd.Properties("Cache Results") = 1
$adoCmd.CommandText = "<LDAP://" & $serverName & "/" & $baseStr & ">;" & $filterStr & ";ADsPath;subtree"
_WriteLogData("Benutzereinträge für " & @UserName & " werden gesucht, auf Server " & StringReplace($LogonServer,"\",""))
_WriteLogData("Benutzereinträge für " & @UserName & " werden gesucht, auf Server " & $LogonServer)
_WriteLogData("Funktionsaufruf lautet : " & $adoCmd & " ")
$objectList = $adoCmd.Execute
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Ein Moment bitte," & @CRLF & @CRLF & "Ihre Benutzereinträge werden gesucht.")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Counter = 1
[/autoit] [autoit][/autoit] [autoit]While Not $objectList.EOF()
[/autoit] [autoit][/autoit] [autoit]$user = ObjGet($objectList.Fields("ADsPath").value)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$samAccountName = $User.samAccountName
[/autoit] [autoit][/autoit] [autoit]If stringlower($samAccountName) = StringLower($AnmeldeUser) Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$UserAccountControl = $user.UserAccountControl
$FirstName = $User.FirstName
$LastName = $User.LastName
$title = $User.title
$PasswordLastChanged = $User.PasswordLastChanged ;pwdLastSet
$IsAccountLocked = $User.IsAccountLocked
_WriteLogData("Benutzereintrag für " & $FirstName & " " & $LastName & " wurde gefunden. Accountcontrol = " & $UserAccountControl)
[/autoit] [autoit][/autoit] [autoit]If $UserAccountControl = 512 or $UserAccountControl = 544 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$DaysLeft = _DatumBerechnen($PasswordLastChanged)
MsgBox(0,"", "Ihr Passwort läuft in " & $DaysLeft & " Tagen, am " & $AnzeigeDatPwdExpires & ", ab." & @CRLF & @CRLF & "Bitte ändern Sie das Passwort bei der nächsten Gelegenheit!")
_WriteLogData("Datum wurde berechnet. Passwortgültigkeitsdauer=" & $DaysLeft & " Tage")
;~ If $DaysLeft <= 10 Then
;~ If $DaysLeft > 0 Then
;~ Switch $DaysLeft
;~ Case 1
;~ $msg = "Ihr Passwort läuft heute ab" & @CRLF & @CRLF & "Bitte ändern Sie das Passwort umgehend!"
;~ ;$icon = 16 ; 16=Stop-sign icon
;~ $icon = 64 ;
;~ Case 2
;~ $msg = "Ihr Passwort läuft morgen ab" & @CRLF & @CRLF & "Bitte ändern Sie das Passwort!"
;~ ;$icon = 16 ; 16=Stop-sign icon
;~ $icon = 64 ;
;~ Case Else
;~ $msg = " Ihr Passwort läuft in " & $DaysLeft & " Tagen, am " & $AnzeigeDatPwdExpires & ", ab." & @CRLF & @CRLF & "Bitte ändern Sie das Passwort bei der nächsten Gelegenheit!"
;~ $icon = 64 ; 64=Information-sign icon consisting of an 'i' in a circle
;~ EndSwitch
MsgBox($icon,"Hallo " & $title & " " & $LastName & ".", $msg)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];~ EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndIf
EndIf
$objectList.MoveNext()
$Counter += 1
Wend
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]If $IsAccountLocked = True Then
GUICtrlSetBkColor($lbl_info, 0xFF0000)
GUICtrlSetData($lbl_info, @CRLF & "Ihr Konto wurde gesperrt." & @CRLF & @CRLF & "Bitte wenden Sie sich an den IT- Support.")
EndIf
EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];-------------------------------------------------------------------------------------------------------------------------------------------------------------
Func _DatumBerechnen($ChangedDate)
local $AnzeigeDatPwdChanged, $Day2Change, $Date2Change
local $HeuteJMT = _NowCalcDate()
local $DatChangedJMT = StringMid( $ChangedDate, 1, 4) & "/" & StringMid( $ChangedDate, 5, 2) & "/" & StringMid( $ChangedDate, 7, 2)
;MsgBox(16,"1",$HeuteJMT & " " & $DatChangedJMT )
$Date2Change = _DateAdd('d',90,$DatChangedJMT)
$Day2Change = _DateDiff( 'd',_NowCalc(),$Date2Change)
;MsgBox(16,"2",$Day2Change & " " & $Date2Change)
[/autoit] [autoit][/autoit] [autoit]$AnzeigeDatPwdExpires = StringMid( $Date2Change, 9, 2) & "." & StringMid( $Date2Change, 6, 2) & "." & StringMid( $Date2Change, 1, 4)
[/autoit] [autoit][/autoit] [autoit];MsgBox(16,"3",$AnzeigeDatPwdExpires)
[/autoit] [autoit][/autoit] [autoit]Return $Day2Change
EndFunc
ich habe ein Tool gebaut mit dem sich unsere Aussendienstler einwählen. Diese Function stammt aus einer Vorgängerversion, hat aber recht lange gedauert und den ganzen "Einwahlprozess" verlängert (nicht zu wörtlich nehmen:-)). Und da es nach meinem damaligen Kenntnisstand nicht nötig war ist diese Function rausgeflogen.
Der unangenehme Nebeneffekt ist dass die User jetzt nicht mehr angezeigt bekommen dass ihr Passwort abläuft.
Das Problem ist dass ich nicht wirklich verstehe was in dieser Function passiert und ob das alles nötig ist .
Kann mir jemand sagen was da passiert, oder wo ich mich da einlesen kann?
Schön wäre es wenn ich eine Meldung ausgeben kann (Achtung! Ihr Passwort läuft in x Tagen ab) und vielleicht ob das KOnto gesperrt ist. Bei drei Logon- Fehlversuchen werden die Kontos gesperrt, und das passiert "leider" sehr oft.