edocom 10 Geschrieben 5. Februar 2009 Melden Teilen Geschrieben 5. Februar 2009 Hallo Leute ich habe ein php script mitwelchem ich benutzernamen und so weiter mit ldap auslesen kann, wenn ich jetzt aber einen wert auslesen gehe den nicht im ad eingetragen habe, wie z.B. "userworkstations oder lastlogon oder accountexpires" dann bekomme ich nur komische zahlen zurück so wie diese: 28782044582525300 ich werd nicht schlau daraus! ich habe eine w2k3 domäne und von hier habe ich die ldap felderbezeichnung: faq-o-matic.net Active Directory: LDAP-Feldnamen wäre flott, wenn sich da einer auskennt und mir mitteilen kann warum das so ist, ich bin jetzt bereits zwei stunden am suchen :D Zitieren Link zu diesem Kommentar
NilsK 2.938 Geschrieben 5. Februar 2009 Melden Teilen Geschrieben 5. Februar 2009 Moin, das liegt ganz einfach daran, dass viele Felder keine Textfelder sind, sondern die Daten in einem anderen Format speichern. Bei "userWorkstations" etwa handelt es sich um ein Multivalue-Feld - AD gibt dir also mehrere Werte zurück, die du je nach Schnittstelle dann meist als Array erhältst und natürlich so behandeln musst. Bei lastLogon oder accountExpires handelt es sich um numerische Werte, die man erst in ein Datum umwandeln muss. Oft versagen dabei leider die Standard-Datumsfunktionen, weil AD die Werte manchmal etwas, naja, eigen speichert. Folge mal dem Link oben auf der Seite, die du genutzt hast. Da ist eine Excel-Datei, die auch die Syntax der jeweiligen Felder angibt. Das illustriert etwas, was ich meine. Du kannst dir mal ansehen, wie ich einige dieser Felder in José auslese. Vieles davon habe ich einfach von anderen Webseiten übernommen. faq-o-matic.net Jose 2.1: Schon wieder ein kleines Update Gruß, Nils Zitieren Link zu diesem Kommentar
edocom 10 Geschrieben 5. Februar 2009 Autor Melden Teilen Geschrieben 5. Februar 2009 hey, ich kenn jose finds echt cool, meine kentnisse reichen aber nicht so weit das ich wirklich verstehe wie jose funktioniert, ich bin neu auf dem gebiet und ich habe es mit php gemacht so: 1. ich lade mir den wert in einen array $ergebnis[$i]['lastlogon'] = $info[$i]['lastlogon'][0]; 2. dann printe ich es direkt else if ($_GET['value'] == 'lastlogon') { echo '<table border=0>'; $sign=''; for ($i=0; $i<$anzahl; $i++) { $aktsign=$ergebnis[$i]['displayname'][0]; if ($aktsign!=$sign) { echo '<tr>'; echo '<td colspan=6>'; echo ' '; echo '</td>'; echo '</tr>'; echo '<tr>'; echo '<td colspan=6>'; echo '<strong>'; echo $aktsign; echo '</strong>'; echo '</td>'; echo '</tr>'; $sign=$aktsign; } echo '<tr>'; echo '<td width=150>' . $ergebnis[$i]['displayname'] . '</td>'; if (empty($ergebnis[$i]['lastlogon'])) echo '<td width=150> </td>'; else /*Breite vom Feld*/ echo '<td width=150>' . $ergebnis[$i]['lastlogon'] . '</td>'; '</tr>'; } } kann ich es hier auch direkt irgendwie umwandeln und dann ausgeben...?? Danke, danke, danke... :D Zitieren Link zu diesem Kommentar
NilsK 2.938 Geschrieben 6. Februar 2009 Melden Teilen Geschrieben 6. Februar 2009 Moin, naja ... ich kenne mich dafür mit PHP nicht aus. :) VBScript kennt für Arrays Funktionen, um die Werte in einen einzigen String zusammenzufassen, das macht die Ausgabe manchmal einfacher. Für die komplexeren Werte: Josés Code ist mittlerweile sehr unübersichtlich. Aber wenn du ein wenig suchst, kommst du vielleicht hinter die Funktionen, die die Datumswerte usw. umrechnen. Grundsätzlich sollte das dann verstehbar und in PHP umsetzbar sein - aber tiefere PHP-Kenntnisse braucht man da schon. Gruß, Nils Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 6. Februar 2009 Melden Teilen Geschrieben 6. Februar 2009 Also was PHP angeht kann ich nicht viel dienen. Aber die Berechnungsgrundlage für die Werte in Datumsfelder des AD ist recht einfach: Die Zahlen (long integer) geben die Anzahl von Sekunden an, die seit dem 01.01.1601 00:00:00 vergangen sind. Also sollte es für dich als PHP-Kundigen nicht sehr schwer sein, das umzurechnen. ;) Zitieren Link zu diesem Kommentar
edocom 10 Geschrieben 9. Februar 2009 Autor Melden Teilen Geschrieben 9. Februar 2009 hallo ja hab rausgefunden was die zahl zu bedeuten hat aber es ist die zeit von 1970 00:00:00 bis jetzt... das problem ist anzeigen lasse als datum, bekomme ich daten in der zukunft und zwar zum teil sehr weit in der zukunft :) bin am schauen wie ich das löse... – ich glaube du hattest doch recht mit 1601 Zitieren Link zu diesem Kommentar
NilsK 2.938 Geschrieben 9. Februar 2009 Melden Teilen Geschrieben 9. Februar 2009 Moin, ja hab rausgefunden was die zahl zu bedeuten hat aber es ist die zeit von 1970 00:00:00 bis jetzt... das wäre Unix-like. Sicher, dass es nicht der Wert von Carsten ist? Last-Logon AttributeThe last time the user logged on. This value is stored as a large integer that represents the number of 100 nanosecond intervals since January 1, 1601 (UTC). A value of zero means that the last logon time is unknown. Last-Logon Attribute (Windows) das problem ist anzeigen lasse als datum, bekomme ich daten in der zukunft und zwar zum teil sehr weit in der zukunft :) bin am schauen wie ich das löse... Naja, der Wert liegt halt knapp 400 Jahre früher als deine Annahme ... Gruß, Nils Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 9. Februar 2009 Melden Teilen Geschrieben 9. Februar 2009 diesen Algorithmus nutze ich, um den Wert umzurechnen highpart = objUser.Properties("LastLogon")(0).HighPart lowpart = objUser.Properties("LastLogon")(0).Lowpart lastlogon = (highpart * 2 ^ 32) - lowpart TextBox1.Text = DateTime.FromFileTime(lastlogon) Zitieren Link zu diesem Kommentar
NilsK 2.938 Geschrieben 9. Februar 2009 Melden Teilen Geschrieben 9. Februar 2009 Moin, hier der Algorithmus in VBScript: Set objUser = GetObject("LDAP://cn=Ken Myer, ou=Finance, dc=fabrikam, dc=com") Set 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# Beschrieben wird das hier: Dandelions, VCR Clocks, and Last Logon Times: These are a Few of Our Least Favorite Things Gruß, Nils 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.