Active Directory Fehlermeldung bei LastLogin

  • habe ein kleines Problem bei der ActiveDirectory Funktion

    _ADGetLastLoginDate


    [autoit]

    Func _ADGetLastLoginDate($user)
    If _ADObjectExists($user) = 0 Then Return 0
    $strQuery = "<LDAP://" & $strHostServer & "/" & $strDNSDomain & ">;(sAMAccountName=" & $user & ");ADsPath;subtree"
    $objRecordSet = $objConnection.Execute($strQuery); Retrieve the FQDN for the object
    $ldap_entry = $objRecordSet.fields(0).value
    $oObject = _ADObjGet($ldap_entry); Retrieve the COM Object for the object
    $result = $oObject.LastLogin
    $oObject.PurgePropertyList

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

    If $result = "" Then
    Return ""
    Else
    Return $result
    EndIf
    EndFunc

    [/autoit]

    Die Funktion geht eigentlich bisher ohne Probleme.

    Nur bei einen User kommt folgender Fehler:

    C:\Program Files\AutoIt3\Include\adfunctions.au3 (289) : ==> The requested action with this object has failed.:
    $result = $oObject.LastLogin
    $result = $oObject.LastLogin^ ERROR

    Überprüft habe ich vorerst ca. 10 bis 20 User, alle ohne Probleme nur bei den einen User erhalte ich die oben genannte Fehlermeldung.

    PS: Der User ist richtig angelegt meiner Meinung und arbeitet bereits längere Zeit bei uns im Unternehmen.

    Hoffe mir kann jemand den Grund nennen warum das Programm mit dem Fehler beendet wird.

    Gruß Jan

  • hmm kann es gerade leider nicht testen...

    ist der User privillegiert ? andere / admin OU?

    ausreichende Rechte?

    Sonderzeichen im Namen?

    mal auf nem anderem DC versucht -> global catalog Fehler?

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • Hallo,

    also an der OU liegt es nicht. Andere User in der OU lassen sich auslesen...

    User der das Programm ausführt ist auch Administrator.(global)

    Sonderzeichen gibt es auch nicht.


    Ich habe nun noch ein weiteres Problem:

    Und zwar bekomme ich einen Fehler angezeigt sofern das Feld (FirstName oder LastName etc. ) nicht gefüllt ist.

    Ich müsste quasi eine Abfrage bauen die vorher überprüft ob es den Wert gibt.

    Hat da jemand eine Idee wie das geht?

    Danke und gruß Jan

  • also ich brauche da jetzt eure Hilfe (siehe quellcode)


    [autoit]

    Func _ADGetLastLoginDate($user)
    If _ADObjectExists($user) = 0 Then Return 0
    $strQuery = "<LDAP://" & $strHostServer & "/" & $strDNSDomain & ">;(sAMAccountName=" & $user & ");ADsPath;subtree"
    $objRecordSet = $objConnection.Execute($strQuery); Retrieve the FQDN for the object
    $ldap_entry = $objRecordSet.fields(0).value
    $oObject = _ADObjGet($ldap_entry); Retrieve the COM Object for the object
    ->>>>(und hier muss er ne Abfrage machen ob es den Wert "LastLogin" überhaupt gibt)
    $result = $oObject.lastlogin
    $oObject.PurgePropertyList

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

    If $result = "" Then
    Return ""
    Else
    Return $result
    EndIf
    EndFunc

    [/autoit]


    wie mache ich das??