AD: pwdLastSet des aktuell angemeldeten Users anzeign

  • Hallo zusammen,

    leider bekomme ich es, auch mit den AD-Funktionen, nicht hin, das Attribut "pwdLastSet" des Active Directory vom aktuell angemeldeten User auszulesen, also das Datum, wann das Kennwort zuletzt gesetzt wurde (nicht, wann es abläuft).

    Ich würde mich freuen, wenn mir jemand auf die Sprünge helfen könnte.

    Danke !

    Edit: so schlecht bin ich garnicht :) :

    [autoit]

    #include <ad.au3>
    #include <DATE.au3>
    _AD_Open()
    $aProperties = _AD_GetObjectProperties(@UserName, "displayname,distinguishedName,pwdlastset")
    $aPWInfo = _AD_GetPasswordInfo()
    _ArrayDisplay($aProperties, "Active Directory Functions - Example 2 - Properties for user '" & @UserName & "'")
    $ddd = $aProperties[3][1]
    _DateTimeFormat($ddd,2)
    msgbox(0,"",_DateTimeFormat($ddd,1)&" "&" "&_DateTimeFormat($ddd,4))
    _AD_Close()

    [/autoit]

    2 Mal editiert, zuletzt von AutoITier (16. Februar 2012 um 22:46)

  • _AD_PasswordInfo gibt einen Array zurück. Element 8 enthält "Password last changed (YYYY/MM/DD HH:MM:SS in local time of the calling user)" oder Element 10 enthält "Password last changed (YYYY/MM/DD HH:MM:SS in UTC)". Beide Elemente enthalten "1601/01/01 00:00:00" wenn das Passwort noch nie gesetzt wurde.
    Ruf einfach nur _AD_PasswordInfo auf und lass Dir das Erbgebnis mit _ArrayDisplay anzeigen.

  • Wenn Du eh schon beide Funktionen aufrufst, dann nimm doch pwdlastset von _AD_PasswordInfo und den Rest aus _AD_GetObjectProperties.
    _AD_PasswordInfo liefert die verlässlichere Info.

  • Vielen Dank. Wenn ich es nun mal so lassen wollen würde - kann man hier noch etwas filtern, so dass das Laden der Daten schneller geht? Derzeit braucht es über VPN paar Sekunden, bis die Daten da sind. Kann es sein, er läd ALLES, obwohl nur vier Angaben gewünscht sind?

    [autoit]

    _AD_Open()
    $aProperties = _AD_GetObjectProperties(@UserName, "displayname,distinguishedName,pwdlastset")

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

    $ddd = $aProperties[3][1]
    _DateTimeFormat($ddd,2)
    $zuletzt = _DateTimeFormat($ddd,2)&" "&" "&_DateTimeFormat($ddd,4)
    $aProperties = _AD_GetObjectProperties(@ComputerName & "$")

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

    $PCName = $aProperties[4][1]
    $PCBeschreibung = $aProperties[7][1]
    msgbox(4144,"",$PCName&" "&$PCBeschreibung

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

    _AD_Close()

    [/autoit]
  • Ja, geht noch etwas kürzer:

    [autoit]

    #include <ad.au3>
    #AutoIt3Wrapper_AU3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=Y
    #include <AD.au3>
    _AD_Open()
    Global $aProperties = _AD_GetObjectProperties(@UserName, "pwdlastset")
    Global $ddd = $aProperties[1][1]
    $ddd = _DateTimeFormat($ddd, 2)
    Global $zuletzt = _DateTimeFormat($ddd, 2) & " " & " " & _DateTimeFormat($ddd, 4)
    $aProperties = _AD_GetObjectProperties(@ComputerName & "$", "cn,description")
    Global $PCName = $aProperties[1][1]
    Global $PCBeschreibung = $aProperties[2][1]
    MsgBox(4144, "", $PCName & " " & $PCBeschreibung)
    _AD_Close()

    [/autoit]
  • So sollt es funzen:

    [autoit]

    #include <ad.au3>
    #AutoIt3Wrapper_AU3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=Y
    #include <AD.au3>
    _AD_Open()
    Global $aProperties = _AD_GetObjectProperties(@UserName, "pwdlastset")
    Global $zuletzt = _DateTimeFormat($aProperties[1][1], 2) & " " & _DateTimeFormat($aProperties[1][1], 4)
    $aProperties = _AD_GetObjectProperties(@ComputerName & "$", "cn,description")
    Global $PCName = $aProperties[1][1]
    Global $PCBeschreibung = $aProperties[2][1]
    MsgBox(4144, "", "PC-Name: " & $PCName & @CRLF & "Beschreibung: " & $PCBeschreibung & @CRLF & "Passwort zuletzt geändert: " & $zuletzt)
    _AD_Close()

    [/autoit]