Hallo Zusammen,
für eines meiner Scripte benötige ich den AD LastLoginTimeStamp!
Dieser ist ja in der AD.au3 dabei, aber sehr langsam!
nun habe ich mir gedacht, ich frage diesen schon beim einlesen über "lastlogontimestamp" ab!
Spoiler anzeigen
$aObjects = _AD_GetObjectsInOU("OU=User,OU="&$aOUs[$x]&",DC=xxx,DC=int", "(&(objectcategory=person)(objectclass=user)(lastlogontimestamp<=129171852000000000))", 2, "sAMAccountName,mail,company")
wenn ich nun hier alle user haben möchte, die sich zum beispiel vor 60 tagen das letzte mal eingeloogt haben, muss ich mir die zahl bei lastlogontimestamp<=129171852000000000 generieren!
hierzu habe ich auf der inet seite http://www.selfadsi.de/deep-inside/mi…-attributes.htm eine Funktion gefunden, die zeigt, wie man ein Datum in einen Integer8 umwandelt.
diese möchte ich gern in autoit wandeln!
'zeigt den Integer8 Wert des aktuellen Datums+Uhrzeit...
WScript.Echo DateToLargeIntegerString(Now)
[/autoit] [autoit][/autoit] [autoit]Function DateToLargeIntegerString(value)
'nimmt ein Datun+Uhrzeit und gibt den entsprechenden Microsoft LargeInteger Wert (Integer8) zurück
'erst die lokale Zeitabweichung aus der Registry auslesen
Set sho = CreateObject("Wscript.Shell")
timeShiftValue = sho.RegRead("HKLM\System\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias")
If IsArray(timeShiftValue) Then
timeShift = 0
For i = 0 To UBound(timeShiftValue)
timeShift = timeShift + (timeShiftValue(i) * 256^i)
Next
Else
timeShift = timeShiftValue
End If
'die Zeit von lokaler Zeit in UTC umrechnen
value = DateAdd("n", timeShift, value)
'wieviele Sekunden seit 1601 sind vergangen?
secs = DateDiff("s", #1/1/1601#, value)
'in Nano-Sekunden umrechnen
DateToLargeIntegerString = CStr(secs) & "0000000"
End Function
im englischen forum hab ich nur von lastlogintimestam in lesbares datumsfpormat gefunden!
http://www.autoitscript.com/forum/topic/86…ript-to-autoit/
kann man diese funktion einfach umsetzen oder gibt es eventuell dafür schon eine lösung?
mein bisheriger versuch
[autoit]
#Include <Date.au3>
;last logon timestamp
[/autoit][autoit][/autoit][autoit]$ll_datum = "01.01.2012 00:00:00"
[/autoit][autoit][/autoit][autoit]_DateToLargeIntegerString($ll_datum)
[/autoit][autoit][/autoit][autoit]Func _DateToLargeIntegerString($value)
;nimmt ein Datun+Uhrzeit und gibt den entsprechenden Microsoft LargeInteger Wert (Integer8) zurück
;erst die lokale Zeitabweichung aus der Registry auslesen
;Set sho = CreateObject("Wscript.Shell")
$timeShiftValue = RegRead("HKLM\System\CurrentControlSet\Control\TimeZoneInformation\","ActiveTimeBias")
MsgBox(0,"",$timeShiftValue)
If IsArray($timeShiftValue) Then
$timeShift = 0
For $i = 0 To UBound($timeShiftValue)
$timeShift = $timeShift + ($timeShiftValue($i) * 256^$i)
Next
Else
$timeShift = $timeShiftValue
EndIf
;die Zeit von lokaler Zeit in UTC umrechnen
$value = _DateAdd("n", $timeShift, $value)
;_DateAdd($sType, $iValToAdd, $sDate)
;wieviele Sekunden seit 1601 sind vergangen?
$secs = _DateDiff("s", "#1/1/1601#", $value)
;_DateDiff($sType, $sStartDate, $sEndDate)
MsgBox(0,"",$secs)
;in Nano-Sekunden umrechnen
$DateToLargeIntegerString = CStr($secs) & "0000000"
EndFunc
[/autoit]gruß gmmg