Die Ticks als Zeiteinheit in der PowerShell

Im letzten Blogeintrag haben wir uns die Uhrzeit angeschaut und die möglichen Formatierungen.

In diesem Blogeintrag schauen wir uns das kleinste Zeitelement, die Ticks, an.

Ein einzelner Tick entspricht 100 Nanosekunden, das entspricht einer zehnmillionenstel Sekunde.

So sehen wir die aktuelle Tick-Zeit. Gezählt wird ab 01.01.0000 um 00:00:00

(Get-Date).Ticks

D.h. seit Christi Geburt sind ca. 63,6 Trillionen Nanosekunden vergangen.

Für Scripte spannender ist die sogenannte FileTime. Auch dieser Zeitwert wird in Ticks, also in 100 Nanosekunden Schritten gezählt, startet aber erst später. Und zwar am 01.01.1601.

(Get-Date).ToFileTime()

Der Weg zurück von FileTime in das normale Datumsformat geht anders:

[DateTime]::FromFileTime(131296540203012408)

Das NTFS Dateisystem nutzt die FileTime. D.h. hinter jedem Zeitstempel einer Datei steht ein auf 100 Nanosekunden genauer Wert (anders als bei FAT. FAT ist nur auf eine Sekunde genau).

Auch im Active Directory werden die Anmeldedaten im FileTime Format abgelegt.

Umgerechnet wird es wieder mit DateTime:

[DateTime]::FromFileTime((Get-ADUser administrator -Properties lastlogon).lastlogon)

Und am Schluss noch einmal alles zusammen. Jetzt bitte im Format Tag.Monat.Jahr anzeigen:

[DateTime]::FromFileTime((Get-ADUser administrator -Properties lastlogon).lastlogon).tostring("dd.MM.yyyy")

 

Eine kleine Anekdote zum Schluss über den UNIX Time Stamp:

Auch UNIX zählt in 100 Nanosekunden Schritten, allerdings ab dem Datum 01.01.1970. Unter UNIX wurde aber gespart und der Wert ist ein 32-bit Integer Wert. Das heißt am 19. Januar 2038 läuft der Zähler über. Bis dahin muss die Linux Welt den Zähler abgelöst haben.

In der Windows Welt ist es ein 64-bit Integer Wert. Hier haben wir keine Probleme bis weit über das Jahr 9999 hinaus.

Im nächsten Blogeintrag sehen wir uns an, wie ich exakt den Anfang und Ende eines Monats erstellen kann.

Was denken Sie?