Ad Abfragen Konto Vorhanden? Letzes LogonDatumUhrzeit?

  • Hey,

    stehe wieder vor einem neuen Problem.
    Das Active directory Abfragen ob ein Konto vorhaden ist und wenn ja,
    letztes Logandatum ausgeben..

    Kann mir jemand einen Tipp geben..

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

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

    Einmal editiert, zuletzt von subzero007 (21. Oktober 2009 um 11:43)

    • Offizieller Beitrag

    Hiermit kannst du prüfen ob ein Account besteht.
    Zu dem Logon Datum hab ich grad keine Idee, dazu ist mir die AD-Materie zu fremd.

    [autoit]

    $strUserName = "kenmyer" ; <== gesuchter User Account

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

    $objConnection = ObjCreate("ADODB.Connection")
    $objConnection.Open "Provider=ADsDSOObject;"

    $objCommand = ObjCreate("ADODB.Command")
    $objCommand.ActiveConnection = $objConnection

    $objCommand.CommandText = _
    ";(&(objectCategory=User)" & _
    "(samAccountName=" & $strUserName & "));samAccountName;subtree"

    $objRecordSet = $objCommand.Execute

    If $objRecordset.RecordCount = 0 Then
    ConsoleWrite( "sAMAccountName: " & $strUserName & " does not exist." & @CRLF)
    Else
    ConsoleWrite( $strUserName & " exists." & @CRLF)
    EndIf

    $objConnection.Close

    [/autoit]

    Edit
    Hab hier was gefunden für die Logonzeit.
    Kommandozeilenbefehl:

    Code
    dsquery * -Filter "(&(objectcategory=computer)(operatingsystem=*windows 2000*))" -attr lastlogon name

    Edit 2
    Aber lies dir uf jeden Fall mal das hier durch:
    http://blogs.technet.com/deds/archive/2…tive-logon.aspx

  • Hey,

    danke guter bericht ;)

    habe auch gerade was gefunden ;)

    [autoit]


    $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


    Func _ADObjGet($dn)
    If $alt_userid = "" Then
    Return ObjGet($dn)
    Else
    Return $objOpenDS.OpenDSObject($dn, $alt_userid, $alt_password, BitOR(0x200, 0x1))
    EndIf
    EndFunc

    [/autoit]

    Kann es aber leider erst morgen testen habe leider auf meiner VM kein DC aber ich glaube es zu verstehen,
    ich glaube es aber auch nur ... ;)

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

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

  • Hey,

    biun schon am testen und Kriege diesen fehler hat jemand eine idee?

    [autoit]

    $strUserName = "kenmyer" ; <== gesuchter User Account

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

    $objConnection = ObjCreate("ADODB.Connection")
    $objConnection.Open = "Provider=ADsDSOObject"

    $objCommand = ObjCreate("ADODB.Command")
    $objCommand.ActiveConnection = $objConnection

    $objCommand.CommandText = _
    ";(&(objectCategory=User)" & _
    "(samAccountName=" & $strUserName & "));samAccountName;subtree"

    $objRecordSet = $objCommand.Execute

    If $objRecordset.RecordCount = 0 Then
    ConsoleWrite( "sAMAccountName: " & $strUserName & " does not exist." & @CRLF)
    Else
    ConsoleWrite( $strUserName & " exists." & @CRLF)
    EndIf

    $objConnection.Close

    [/autoit]

    (13) : ==> The requested action with this object has failed.:

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

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

  • Hast Du Dir auf https://autoit.de/www.autoitscript.com die adfunctions UDF schon mal angesehen (kann derzeit keinen Link einbauen, da die Site down ist)? Die kann das und vieles mehr.
    Das mit dem LastLogonDate ist so ein Problem. Da es ewig dauert, bis das Datum auf alle AD Server repliziert ist, hilft für ein genaues Datum nur zuerst die Liste aller AD-Server zu erstellen und dann jeden nach dem Datum abzufragen. Ergebnis ist dann das "höchste" Datum aller AD-Server.