Wenn ich PowerShell-Skripte schreibe, habe ich oft festgestellt, dass ich auf das Datum verweisen muss. Zum Beispiel habe ich gelegentlich Skripte geschrieben, die Windows-Ereignisprotokolle von einem bestimmten Datum abrufen, oder Skripte, die alternde Daten basierend auf dem Datum archivieren, an dem eine Datei erstellt wurde. Dies sind nur einige Beispiele dafür, wie auf das Datum in einem PowerShell-Skript verwiesen werden muss., In diesem Artikel möchte ich Ihnen einige Tricks für die Arbeit mit Datumsangaben in PowerShell zeigen.
Abrufen des Datums
Es ist einfach, PowerShell das aktuelle Datum anzuzeigen. Geben Sie dazu einfach das Cmdlet Get-Date ein. Wenn Sie das Datum auf eine bestimmte Weise anzeigen müssen, bietet PowerShell hierfür eine Reihe verschiedener Optionen. Die einfachste Methode ist die Verwendung eines Anzeigehinweises. Der Parameter DisplayHint kann auf Date, Time oder DateTime gesetzt werden. Das Bild unten zeigt, wie das grundlegende Get-Date-Cmdlet funktioniert, und einige Beispiele für die Verwendung des Parameters DisplayHint.,
Wenn Sie etwas mehr Kontrolle über die Ausgabe benötigen, können Sie den Parameter Format oder den Parameter UFormat verwenden. Der Formatparameter wird meistens verwendet, wenn Sie das Datum in ein bestimmtes Format einfügen müssen, um einen Vergleich durchzuführen. Wir werden den Formatparameter in diesem Artikel nicht verwenden, aber es ist immer noch eine gute Idee, sich seiner Existenz bewusst zu sein.
Der Parameter UFormat wird mehr für Anzeigezwecke verwendet. Sie können die verschiedenen Elemente, aus denen Datum und Uhrzeit bestehen, nach Ihren Wünschen anordnen., Sie müssen lediglich verschiedene Formatierungszeichen an den Parameter UFormat anhängen. Zu den Parametern, die Sie verwenden können, gehören:
%M-Monat (als Zahl)
%D — Datum
%Y — Jahr
%A — Der Wochentag
%Z — Die Zeitzone, ausgedrückt als Offset von UTC oder Zulu-Zeit. Zum Beispiel ist -5 Eastern Time in den Vereinigten Staaten.
Unten sehen Sie ein Beispiel, wie der Parameter UFormat funktioniert.
Im obigen Bild gibt es zwei Dinge, die es wert sind, beachtet zu werden. Zunächst werden Sie feststellen, dass alles, was dem Parameter UFormat folgt, in Anführungszeichen gesetzt ist., Dies liegt daran, dass ich nicht nur Formatierungszeichen spezifiziere, sondern auch Text verwenden kann. In der Abbildung habe ich eine Mischung aus Text und Formatierungszeichen verwendet.
Die andere Sache zu bemerken ist, dass, obwohl ich an der Ostküste der Vereinigten Staaten lebe, die normalerweise einen Zeitzonenversatz von -5 hat, die Ausgabe in der obigen Abbildung den Versatz als -4 zeigt. Dies ist, weil es Sommerzeit ist. Aber wäre es nicht schön, das überprüfen zu können? Wir können tatsächlich. Hier ist, wie es gemacht wird:
$A=Get-Date
$A.,IsDaylightSavingTime ()
Wie Sie im Bild unten sehen können, zeigt PowerShell den Wert True an, was darauf hinweist, dass es sich tatsächlich um Sommerzeit handelt.
Was über den Tag des Jahres?
Wir können auch PowerShell verwenden, um uns zu sagen, an welchem Tag des Jahres ist es. So funktioniert das:
$A=Get-Date
$A. DayOfYear
Wenn Sie die Dinge wirklich interessant machen möchten, können Sie jedoch ein Datum angeben, um herauszufinden, auf welchen Tag des Jahres dieses Datum fällt. Das von Ihnen angegebene Datum kann Vergangenheit oder Zukunft sein. Hier ist ein Beispiel:
Get-Datum -Jahr 2018 -Monat 8 -Tage 22).,DayOfYear
Im Bild unten sehen Sie einige Beispiele.
Datumsvergleiche durchführen
Wie ich bereits sagte, ist es möglich, PowerShell zu verwenden, um Datumsvergleiche durchzuführen. Obwohl Sie den Parameter-Format verwenden können, um das Datum in ein bestimmtes Format einzufügen, bevor Sie es mit einem anderen Wert vergleichen, ist dies nicht immer erforderlich. Zum Beispiel erfordert das Vergleichen von Dateischreibdaten keine spezielle Formatierung.,
Nehmen wir für einen Moment an, dass Sie die letzte Schreibzeit für eine bestimmte Datei mit einem Datum und einer Uhrzeit Ihrer Wahl vergleichen möchten, um festzustellen, ob die Datei kürzlich als das angegebene Datum geschrieben wurde.
In einer solchen Situation müssen wir als erstes unser Zieldatum einer Variablen zuordnen. Zur Demonstration werde ich den 2.Januar 2017 (ein zufälliges Datum) der Variablen A$zuordnen. Ich werde dann eine bestimmte Datei einer Variablen zuordnen, die ich X$nennen werde. Es wird dann möglich sein, Vergleiche zwischen den beiden zu machen., Also hier sind die Befehle, die ich nutzen werde:
$A = (Get-Date -Year 2017 -Month 01 Tag 02)
$A
$X = Get-ChildItem-Readme-Datei.txt
$X. LastWriteTime
$X. LastWriteTime-GT $A
Die erste Codezeile ordnet die Variable $A dem 2. Januar 2017 zu. Die nächste Zeile überprüft einfach, ob die Variable das gewünschte Datum enthält. Die dritte Codezeile ordnet die Variable $X einer Datei namens ReadMe zu.txt. Die vierte Zeile zeigt die letzte Schreibzeit für die Datei an. Die letzte Codezeile macht einen Vergleich zwischen den beiden Daten., Es wird zeigen, True ist die Datei wurde vor kurzem als 2. Januar 2017 geschrieben. Andernfalls wird der Wert False angezeigt. Die Bildschirmaufnahme unten zeigt dies in Aktion. Sie werden auch feststellen, dass ich eine weitere Zeile hinzugefügt habe, um zu überprüfen, ob die letzte Schreibzeit der Datei älter als (-LT) 2.Januar 2017 ist. Wenn Sie zwei separate Vergleiche durchführen, können Sie sehen, dass der Vergleich wirklich das tut, was er tun soll.,
Datumsangaben in PowerShell: Mehr zu lernen
PowerShell ermöglicht es Ihnen tatsächlich, weit mehr in Bezug auf Datumsformatierung und Vergleiche zu tun als das, was ich in diesem Artikel gesprochen habe. Wenn Sie mehr über die Verwendung von Datumsangaben in PowerShell erfahren möchten, ist die Microsoft-Dokumentation für das Cmdlet Get-Date ein guter Anfang.