max1982 10 Geschrieben 16. Januar 2010 Melden Teilen Geschrieben 16. Januar 2010 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 Zitieren Link zu diesem Kommentar
P.Foeckeler 11 Geschrieben 16. Januar 2010 Melden Teilen Geschrieben 16. Januar 2010 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 Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 16. Januar 2010 Melden Teilen Geschrieben 16. Januar 2010 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 Zitieren Link zu diesem Kommentar
P.Foeckeler 11 Geschrieben 16. Januar 2010 Melden Teilen Geschrieben 16. Januar 2010 (bearbeitet) 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 16. Januar 2010 von P.Foeckeler Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.