Das klassische Beispiel, wenn es um Probleme mit regionalen Einstellungen in PowerShell geht, ist das Datum: Heute ist der 23. Januar 2017
Der PowerShell Befehl Get-Date zeigt folgendes auf einem deutschen Server:
PS C:\> Get-Date Montag, 23. Januar 2017 09:57:21
Das gleiche auf einem englischen Server:
PS C:\> Get-Date Monday, January 23, 2017 10:19:30 AM
In Skripten sieht man ganz gerne folgende Methode für die Kurzform des Datums
(Get-Date).ToShortDateString()
Auf einem deutschen Server bekomme ich folgendes Ergebnis (Tag.Monat.Jahr)
PS C:/> (Get-Date).ToShortDateString() 21.01.2017
Auf einem englischen Server sieht es aber so aus (Monat/Tag/Jahr)
PS C:/> (Get-Date).ToShortDateString() 1/21/2017
Das kann natürlich später im Skript zu Problemen führen, da Tag und Monat an verschiedenen Stellen stehen.
Wenn ich immer das gleiche Ausgabeformat haben möchte, dann gebe ich es lieber gleich sprachunabhängig vor. Das Ergebnis ist auf beiden Servern identisch.
Get-Date –Format „dd.MM.yyyy“
PS C:\> Get-Date –Format "dd.MM.yyyy" 21.01.2017
Noch eleganter ist es, anstatt mit dem Befehlsparameter –format, mit einer Datums-Methode zu arbeiten
(Get-Date).ToString("dd.MM.yyyy")
PS C:\> (Get-Date).ToString("dd.MM.yyyy") 21.01.2017
So ist es möglich, mehrere Methoden zu verbinden, z.B. ziehe einen Tag ab und wandle das Datum in das Kurzformat um
(Get-Date).AddDays(-1).ToString("dd.MM.yyyy")
PS C:\> (Get-Date).AddDays(-1).ToString("dd.MM.yyyy") 22.01.2017
Im nächsten Blogeintrag schauen wir uns die Uhrzeit genauer an
Was denken Sie?