Heute behandeln wir das CMDlet Get-Date und ich zeige euch einige, hoffentlich, coole Dinge und was ihr alles damit anstellen könnt.
Wir benötigen das aktuelle Datum und die aktuelle Uhrzeit zB um Logfiles mit einem Datum zu versehen. Oder um zB Dateien zu bekommen die älter als ein bestimmtes Datum sind.
Dazu müssten wir mit dem Datum rechnen können.
Wie das funktioniert zeige ich euch in diesem Beitrag.
Der Einstieg
Also, fangen wir mal klein an und starten die PowerShell ISE auf unserem Rechner.
Als erste geben wir mal folgendes sein
Get-Date
Das sollte uns das aktuelle Datum inklusive der Zeit zurückgeben, sollte dann auch wie folgt aussehen
Mittwoch, 13. November 2013 18:05:37
Sagte ich doch das es ganz einfach ist.
Jetzt möchten wir vielleicht nur den aktuellen Tag, das Jahr oder nur den Monat haben, das sieht dann wie folgt aus
(Get-Date).Day
(Get-Date).Month
(Get-Date).Year
Das sollte dann wie folgt aussehen
13
11
2013
Was hier gleich auffällt das wir nur noch die Zahlen zurückbekommen, dazu später mehr wenn es um die Formatierung geht.
So, und da wir jetzt wissen wie wir das Datum in die Einzelteile zerlegen, denke ich mal können wir das mit der Zeit auch machen.
Also geben wir mal folgendes ein.
(Get-Date).Hour
(Get-Date).Minute
(Get-Date).Second
(Get-Date).Millisecond
Da sollte uns dieses Ergebnis liefern
18
18
33
412
Wir haben sogar die Möglichkeit uns die Millisekunden zu holen.
Aber das war noch nicht alles, vielleicht benötigt ihr auch mal die Zeit in ganzen Zahlen, dann probiert mal folgendes.
(Get-Date).TimeOfDay
Das liefert folgendes Ergebnis
Days : 0
Hours : 18
Minutes : 20
Seconds : 3
Milliseconds : 883
Ticks : 660038834901
TotalDays : 0,763933836690972
TotalHours : 18,3344120805833
TotalMinutes : 1100,064724835
TotalSeconds : 66003,8834901
TotalMilliseconds : 66003883,4901
Wie ihr sehen könnt, habt ihr hier die Möglichkeit die Werte in ganzen Zahlen zu erhalten.
Mit diesem Befehl bekommt ihr die ganze Zahl für die Stunden.
(Get-Date).TimeOfDay.TotalHours
Das Ergebnis ist dann folgendes:
18,3856484749444
Das war jetzt mal der Einstieg, jetzt kommen wir zur Formatierung.
Formatierung mit Get-Date
Jetzt kommen wir dazu, das Datum zu formatieren. Es wird Situationen geben wo wir das Datum mal nur in Zahlen benötigen, mal mit ausgeschriebenen Monat, mal das Jahr mit 4 oder 2 Zeichen. Hier zeige ich euch wie das geht.
Jetzt holen wir uns mal den aktuellen Tag, und dieser soll ausgeschrieben sein
Get-Date -format dddd
Ergebnis:
Sonntag
Jedoch liefert folgendes Kommando ein anderes Ergbins
Get-Date -format dd
Ergebnis:
17
Also bekommen wir hiermit den aktuellen Tag im Monat zurück
Bevor ich jetzt noch mehr dieser Beispiele zeige, zeige ich euch in einer Tabelle allen Optionen zur Formatierung und wie das Ergebnis ist.
Zum besseren Verständnis hier das Original Datum laut Get-Date: Sonntag, 17. November 2013 09:29:09
Kommando | Beschreibung | Sample |
Get-Date -Format dddd | Name des Tages | Sonntag |
Get-Date -Format ddd | Kurzname des Tages | So |
Get-Date -Format dd | Zahl des Tages im Monat | 17 |
Get-Date -Format d | ausgeschrieben Datum | 17.11.2013 |
Get-Date –Format %M | Zahl des Monats ohne führende 0 | 11 |
Get-Date -Format MM | Zahl des Monats mit führend 0 | 11 |
Get-Date -Format MMM | Kurzname des Monats | Nov |
Get-Date -Format MMMM | Name des Monats | November |
Get-Date -Format %y | Das Jahr ohne Jahrzehnt und ohne führende Null wenn das Jahr nur 1 Stelle hat | 13 |
Get-Date -Format yy | Die letzten beiden Stellen des Jahres | 13 |
Get-Date -Format yyyy | Das volle Jahr mit 4 Stellen | 2013 |
Get-Date -Format %h | Die Stunde im 12h Format ohne führende 0 | 9 |
Get-Date -Format hh | Die Stunde im 12h Format mit führende 0 | 09 |
Get-Date -Format %H | Die Stunde im 24h Format ohne führende 0 | 9 |
Get-Date -Format HH | Die Stunde im 24h Format mit führende 0 | 09 |
Get-Date -Format %m | Die Minute ohne führende 0 | 29 |
Get-Date –Format mm | Die Minute mit führende 0 | 29 |
Get-Date -Format %s | Die Sekunde ohne führende 0 | 9 |
Get-Date –Format ss | Die Sekunde mit führende 0 | 09 |
Get-Date -Format D | Sonntag, 17. November 2013 | |
Get-Date -Format f | Sonntag, 17. November 2013 09:32 | |
Get-Date -Format F | Sonntag, 17. November 2013 09:32:54 | |
Get-Date -Format g | 17.11.2013 09:33 | |
Get-Date -Format G | 17.11.2013 09:33:29 |
So, jetzt können wir eigentlich fast alle Varianten darstellen die wir benötigen. Zu beachten ist die Groß- und Kleinschreibung bei einigen Optionen.
Beispiele
Get-Date -Format yy-MM-dd | 13-11-17 |
Get-Date -Format HH:mm | 10:38 |
Get-Date -Format MMM-yy | Nov-13 |
Mit dem Datum rechnen
Jetzt wird’s erst richtiginteressant, wir wissen also nun wie wir das aktuelle Datum mit Get-Date bekommen, und wir wissen wie wir es richtig formatieren.
Und jetzt zeige ich euch wie ihr mit dem Datum rechnen könnt.
Also, bei mir ist es jetzt mittlerweile etwas später geworden, das aktuell Datum lautet: Sonntag, 17. November 2013 15:45:09
ich möchte nun 5 Tage zum aktuellen Datum hinzurechnen, also benutze ich folgendes Kommando.
(Get-Date).AddDays(5)
Das Ergebnis
Freitag, 22. November 2013 15:46:36
Das ganz funktioniert natürlich auch mit Stunden, Tage, Monat, Jahr, Minuten, Sekunden….
Hier mal ein paar Beispiele
(Get-Date).AddHours(5)
(Get-Date).AddMinutes(5)
(Get-Date).AddMonths(5)
(Get-Date).AddYears(1)
Liefern diese Ergebnisse:
Sonntag, 17. November 2013 20:48:44
Sonntag, 17. November 2013 15:53:44
Donnerstag, 17. April 2014 15:48:44
Montag, 17. November 2014 15:48:44
Natürlich könnt ihr mehrere dieser Funktionen kombinieren, hier ein Beispiel
(Get-Date).AddDays(5).AddMonths(2).AddYears(1)
liefert dieses Ergebnis
Donnerstag, 22. Jänner 2015 15:48:31
Selbstverständlich können wir damit auch Minus-Rechnen, einfach vor der Zahl ein “-“ einfügen
(Get-Date).AddDays(-5)
liefert uns folgendes
Dienstag, 12. November 2013 15:56:40
Zum Schluss kombinieren wir nun das Formatieren und das Rechnen.
Folgendes Kommando rechnet ein Monat zurück und gibt nur das Monat aus
Get-Date -format MMMM ((Get-Date).addmonths(-1))
So könnt ihr nun alles kombinieren.
Michael Seidl aka Techguy
Danke. Für deine PowerShell Scripts…. 🙂
Pingback: Ablaufdatum des Passwortes der AD User mit PowerShell auslesen » TechGuy
Pingback: Meine PowerShell Scripts zum Download » TechGuy