10. januar 2014 - 12:12Der er
37 kommentarer og 1 løsning
AD og LargeInteger/Interval
Hejsa.
Jeg sidder og skal trække data ud fra vores AD miljø via SQL syntax. Noget af det data er at finde ud af hvornår en computer sidst har været logget ind i systemet.
Atribute: lastLogonTimestamp
men den er en largeInteger/Interval.
Jeg aner ikke hvordan den ged skal barberes.
Er der nogen der kan hjælpe mig med det?
Hvis jeg bruger ADSI edit kan jeg hive det her ud fra een:
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
function LargeIntToDateTime(Value: Int64): TDateTime; var lastLogonTime: double; begin lastLogonTime := Value / (60 * 10000000); lastLogonTime := lastLogonTime / 1440;
Result := EncodeDate(1601,1,1) + lastLogonTime ; end;
The 18-digit Active Directory timestamps, also named 'Windows NT time format' and 'Win32 FILETIME or SYSTEMTIME'. These are used in Microsoft Active Directory for pwdLastSet, accountExpires, LastLogon, LastLogonTimestamp and LastPwdSet. The timestamp is the number of 100-nanoseconds intervals (1 nanosecond = one billionth of a second) since Jan 1, 1601 UTC.
Det var ikke min tanke at du skulle bruge hjemmesiden til din læsning men blot så du kunne se at det er den rigtige måde at regne tallet om til en dato/tid. Men nu da jeg har læst alle indlæg :-) kan jeg se at fedeko´s function LargeIntToDateTime jo gør lige det.
Men hvis du nu kopierede koden ind, i stedet for at skrive den ind (det går jeg ud fra, at du har gjort, da der jo må have stået TDateTime i din kode, da du ellers ville have fået en compile fejl), så vi slipper vi jo for den ekstra fejlmulighed, at du får skrevet forkert, når du skriver koden herind.
Det jeg prøver at skrive er, at når du skal sætte din kode ind i indlæggene her på Eksperten, ville være klart at foretrække, hvis du kopierede den ind, netop for at udelukke tyrkfejl.
Og da der jo ikke kan have stået "TDataTime" i din kode (for så havde den ikke kompileret), så kan du jo ikke have kopieret den herind.
Så viser den det rigtige. Eneste forskel er at tiden ikke er korrekt 2 timers til forskel, men det er nu ikke så vigtig. Men hvordan får jeg kun datoen ud og hvordan får jeg det rigtig tal fra AD?
Jeg må desværre blive dig svar skyldig. Har som sagt meget lidt forstand på Active Directory.
Men nu har du i hvert fald fået sporet dig ind på, hvor fejlen opstår. Så hvis jeg var dig, ville jeg oprette et nyt spørgsmål omkring den fejl du får, når du prøver at hive timestamp'et ud.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.