Jump to content

Active Directory: lastLogonTimestamp mit vbscript


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Leute,

 

ich fürchte ich bin der x-te hier der eine Frage zu lastlogontimestamp-Eigenschaft stellt, aber ich bekomm's einfach nicht hin. Ich muß in einem größeren VBScript inaktive User und Workstations in einer Active Directory Domäne ausfindig machen. Dazu habe ich diesen Code gefunden:

 

Set objUser = GetObject("LDAP://cn=username,dc=yourdomain,dc=com")
objLastLogon = objUser.Get("lastLogonTimestamp")

intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart 
intLastLogonTime = intLastLogonTime / (60 * 10000000)
intLastLogonTime = intLastLogonTime / 1440

Wscript.Echo "Last logon time: " & intLastLogonTime + #1/1/1601#

 

Ich bekomme hier immer einen VB-Fehler in der zweiten Zeile!!:

Object doesn't support this property or method: 'objLastLogon'

 

Und überhaupt: Wie kann ich denn dann nach Benutzern suchen, deren Datum älter ist als, sagen wir 3 Monate? Denn dazu ist lastlogontimestamp doach da, oder nicht?

 

bin für jede anregung dankbar! :o

 

Max

Link zu diesem Kommentar

Heyho,

 

dein Fehler kommt, weil du entweder GetEx() anstatt Get() verwenden solltest, um lastLogonTimestamp auszulesen. Oder du erzeugst in der zweiten Zeile mit

 

[b]set [/b]objLastLogon = objUser.Get("lastLogonTimestamp")

 

ein ADSI-Large Integer Object... Dann sollte der Laufzeitfehler nicht auftreten.

 

Ich glaube die Beschreibung zu lastLogonTimestamp im SelfADSI Tutorial sollte Dir weiterhelfen. Dort gibt es auch ein Beispielscript für eine Suche nach Objekten, deren lastLogonTimstamp-Wert älter als 6 Monate sind. Dazu muß ein LDAP-Filter erzeugt werden, aber das ist dort alles sehr gut erklärt... :D

 

Gruß,

Philipp

Link zu diesem Kommentar

Hallo Max,

 

das Problem kann mit getex bzw. get eigentlich nichts zu tun haben, da diese Methoden angewendet werden, je nachdem ob das auszulesende Attribut ein multivaluedattribute ist oder nicht. Für lastLogonTimestamp ist die get-Methode richtig

 

Microsoft Windows 2000 Scripting Guide - Reading Attributes

 

sieh doch mal in der scriptinggallery nach, ob du ein passendes Script findest. Dieses Repository ist sehr umfangreich

http://gallery.technet.microsoft.com/scriptcenter/en-us/

 

cu

blub

Link zu diesem Kommentar

Hallo,

 

ich nochmal. Blub hat Rech, Dein Fehler hat mit nix mit GetEx() zu tun, sondern mit dem fehlenden 'Set' in der zweiten Zeile (siehe Code unten). Sorry. Hab's grad probiert... Ohne das Set erzeugt er kein ADSI-Objekt, und dadurch hat er er dann keine Interface-Properties "objLastLogon.HighPart" und "objLastLogon.HighPart", die du weiter unten verwendest. So wie ich das sehe macht zu allem Überfluß der Script-Code, den Du verwenden willst, auch einen Berechnungsfehler. Die Lowpart-Anteil des Large Integers kann nämlich so groß werden, dass VBScript denkt, es wäre ein negativer Wert (im Script gibt es halt keine "Unsigned Integers"....). Da fehlt einfach noch das hier

 

Set objUser = GetObject("LDAP://cn=username,dc=yourdomain,dc=com")
[b][color="Red"]Set[/color][/b] objLastLogon = objUser.Get("lastLogonTimestamp")

[b][color="Red"]i8High = objLastLogon.HighPart
i8Low = objLastLogon.LowPart 

If (i8Low < 0) Then
   i8High = i8High + 1
End If[/color][/b]

intLastLogonTime = i8High  * (2^32) + i8Low 
intLastLogonTime = intLastLogonTime / (60 * 10000000)
intLastLogonTime = intLastLogonTime / 1440

Wscript.Echo "Last logon time: " & intLastLogonTime + #1/1/1601#

 

Ansonsten war der Link http://www.selfadsi.de/ads-attributes/user-lastLogonTimestamp.htm eigentlich schon ein Volltreffer, brauchst nicht im Script-Repository zu suchen, sondern da steht genau das Beispielscript, das Du brauchst...

 

Viele Grüße noch,

Philipp

bearbeitet von P.Foeckeler
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...