Ist auf dem Computer ein NTP-Server installiert und konfiguriert, so kann ganz schnell angezeigt werden, mit welchem Server die Zeit abgeglichen wird.
1 | ntpq -c pe |
Ist auf dem Computer ein NTP-Server installiert und konfiguriert, so kann ganz schnell angezeigt werden, mit welchem Server die Zeit abgeglichen wird.
1 | ntpq -c pe |
Heute musste ich mir eine Funktion für Visual Basic Script schreiben, welche mir das aktuelle Datum und die Uhrzeit in einen Unixtimestamp konvertiert.
VB-Script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Function DateTime2UnixTimestamp (intJahr,intMonat,intTag,intStunde,intMinute,intSekunde) ' Fixe Variablen definieren intSekundenProTag = 24 * CLng(3600) datBeginnDatum = DateSerial(1970, 1, 1) ' Zu Datum zusammensetzen datDatum = DateSerial(intJahr, intMonat, intTag) ' Differenz seit 01.01.1970 in Tagen errechnen intTage = datDatum - datBeginnDatum ' Zeitangebe in Sekunden umrechnen datDatumInSekunden = (intStunde * 3600) + (intMinute * 60) + intSekunde ' Gesamtergebnis ausgeben DateTime2UnixTimestamp = ((intTage * intSekundenProTag) + datDatumInSekunden) End Function Wscript.echo DateTime2UnixTimestamp(2009, 12, 31, 13, 53, 24) |
Bei Serverdiensten, die auf einem Linux-Betriebssystem laufen, wird häufig das Datum und die Uhrzeit im Unix-Timestamp – Format protokolliert. Dieser Zeitstempel zählt einfach jede vergangene Sekunde seit dem 1. Januar 1970 (UTC-Zeit). Hinzu kommt noch, dass viele Server nicht die Zeitzonen verwenden, sondern die UTC-Zone.
Die folgende Zeile nimmt nun die aktuelle lokale Zeitzone und addiert seit dem 01.01.1970 den Timestamp hinzu. Die Umrechnung sieht dann wie folgt aus:
1 | [timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds(1546843450)) |
“1546843450″ ist in diesem Beispiel der Timestamp.
Wer das Datum und die Uhrzeit ohne Umrechnung in die lokale Zeit machen möchte, der kann die o.g. Zeile um “.ToUniversalTime()” am Ende erweitern und erhält weiterhin UTC.
Für Protokolle oder Sicherungen benötigt man immer wieder Verzeichnisse die täglich neu angelegt werden und die das aktuelle Datum enthalten.
Das folgende Skript legt ein Verzeichnis im folgenden Format an: Backup_Jahr-Monat-Tag, also z.B. “Backup_2009-02-10″
Batch-Skript:
1 2 3 4 5 | SET Jahr=%date:~-4% SET Monat=%date:~-7,2% SET Tag=%date:~-10,2% mkdir "Backup_%Jahr%-%Monat%-%Tag%" |
In dem ersten Beispiel wird ganz einfach das Datum und die Uhrzeit des letzten PC-Neustarts per WMI ausgelesen. Leider stellt man nun fest, dass dies ein anderes Format (WMI-Format) hat, als das, was wir sonst gewohnt sind.
1 | Get-WmiObject -Class Win32_OperatingSystem -Property LastBootUpTime |
Das folgende Beispiel macht genau das selbe, aber wandelt das Format mit “ConvertToDateTime” in ein gut lesbares vom Typ “System.DateTime” um.
1 2 | $temp = Get-WmiObject -Class Win32_OperatingSystem -Property LastBootUpTime $temp.ConvertToDateTime($temp.LastBootUpTime) |