Benutzer mit den meisten Antworten
get-childitem

Frage
-
Hallo,
ich möchte mit get-childitem -LastWriteTime und get-date -uFormat "%d.%m.%Y" das aktuelle Datum und das letzte Änderugnsdatum einer Datei vergleichen.
Leider bekomme ich die Ausgabe über get-childtime nicht fomatiert.
Gibt es hiezu eine Lösung? Vielleicht auch komplett anders.
Gruß
Armin
Antworten
-
Moin,
ehrlich gesagt: Du gehst da falsch ran. Vergleich die Werte nicht als
"Text" (der sich dann mit den Regionaleinstellungen auch noch ändert).In beiden Fällen handelt es sich um ein Objekt vom Typ "System.DateTime".
(get-childitem | get-member und get-date | get-member).
-> http://msdn.microsoft.com/en-us/library/system.datetime.aspx
Diese beiden Object kannst Du quasi direkt vergleichen. Um das
Ausgabeformat musst Du Dir hierbei keine Gedanken machen.Beispiel 1:
$a = get-childitem "datei1.txt"
$b = get-childitem "datei2.txt"if ($a.LastWriteTime -lt $b.LastWriteTime)
{
write-host "A ist älter als B"
}Das geht natürlich auch mit get-date, ist aber ziemlich sinnlos, wenn Du
alle Dateien mit "Jetzt" vergleichst. Es würde mich wundern, wenn dann
jüngere dabei sind.Beispiel 2:
$a = get-childitem "datei1.txt"
$b = get-dateif ($a.LastWriteTime -lt $b)
{
write-host "A ist älter als B"
}Interessant ist aber, dass man bei System.DateTime (und damit auch bei
"get-date") auch gleich rechnen kann.Beispiel 3:
$a = get-childitem "datei1.txt"
$b = (get-date).AddDays(-10)if ($a.LastWriteTime -lt $b)
{
write-host "A ist älter als 10 Tage"
}Ja, es gibt wirklich nur "Add"-Funktionen, aber da diese auch negative
Werte annehmen können, kann auch man subtrahieren - da muss man nur erst
mal darauf kommen.Für die PowerShell muss man sich eines merken: Alles ist ein Objekt. Und
Objekte kann man anders behandeln, als simple Textausgaben.
Grüße aus Berlin schickt Robert
MVP Exchange Server- Als Antwort markiert AucheinName Dienstag, 12. Oktober 2010 07:37
Alle Antworten
-
Moin,
ehrlich gesagt: Du gehst da falsch ran. Vergleich die Werte nicht als
"Text" (der sich dann mit den Regionaleinstellungen auch noch ändert).In beiden Fällen handelt es sich um ein Objekt vom Typ "System.DateTime".
(get-childitem | get-member und get-date | get-member).
-> http://msdn.microsoft.com/en-us/library/system.datetime.aspx
Diese beiden Object kannst Du quasi direkt vergleichen. Um das
Ausgabeformat musst Du Dir hierbei keine Gedanken machen.Beispiel 1:
$a = get-childitem "datei1.txt"
$b = get-childitem "datei2.txt"if ($a.LastWriteTime -lt $b.LastWriteTime)
{
write-host "A ist älter als B"
}Das geht natürlich auch mit get-date, ist aber ziemlich sinnlos, wenn Du
alle Dateien mit "Jetzt" vergleichst. Es würde mich wundern, wenn dann
jüngere dabei sind.Beispiel 2:
$a = get-childitem "datei1.txt"
$b = get-dateif ($a.LastWriteTime -lt $b)
{
write-host "A ist älter als B"
}Interessant ist aber, dass man bei System.DateTime (und damit auch bei
"get-date") auch gleich rechnen kann.Beispiel 3:
$a = get-childitem "datei1.txt"
$b = (get-date).AddDays(-10)if ($a.LastWriteTime -lt $b)
{
write-host "A ist älter als 10 Tage"
}Ja, es gibt wirklich nur "Add"-Funktionen, aber da diese auch negative
Werte annehmen können, kann auch man subtrahieren - da muss man nur erst
mal darauf kommen.Für die PowerShell muss man sich eines merken: Alles ist ein Objekt. Und
Objekte kann man anders behandeln, als simple Textausgaben.
Grüße aus Berlin schickt Robert
MVP Exchange Server- Als Antwort markiert AucheinName Dienstag, 12. Oktober 2010 07:37