Jump to content

Dateidatenausgabe in Powershell


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich habe mich jetzt schon ein bisschen in Powershell eingefuchst, bräuchte aber nochmal Hilfe.

 

Also ich habe ein Verzeichnis XY unter einem bestimmten Pfad, darin möchte ich die jüngste Datei ermitteln. Wenn die jüngste Datei kleiner als 24 Std ist, soll eine ok Meldung kommen wenn sie größer als 24 Std. ist soll ein nicht ok angezeigt.

habt ihr da mal ein Dedckansatz für mich.

 

ich denke ich muss dort mit select-object und ft date arbeiten oder?

Link zu diesem Kommentar

Hi,

 

hab das mal so gemacht hier musst du nur $date austauschen oder ein modifiziertes Datum einfügen.

 

Was noch hilft ist

get-help about_if

das sind nützliche Infos zu if-Abfragen.

 

get-childitem | foreach-object -process {if ($_.LastWriteTime -lt $date)
{write-host "Alles OK!"} else {write-host "Naja..."}}

 

Du musst halt noch -lt $date gegen -gt (get-date).adddays(-1) tauschen

bearbeitet von gearloose
Link zu diesem Kommentar

{$_.lastwritetime -gt (get-date).adddays(-1)} |measure-object).count -gt 0)

 

könnt ihr mir mal kurz erklären, was hier passiert.

bzgl. dem -gt und dem measure Objekt.

 

Kann man den eigentlichen Quellcode

if ((Get-ChildItem c:\temp |where-object{$_.lastwritetime -gt (get-date).adddays(-1)} |measure-object).count -gt 0){write-host "alles ok"}

 

noch verkürzen als oohne das Measure Objekt?

Link zu diesem Kommentar

-gt bedeutet "greater than" oder "größer als"

 

Ich habe -nimms bitte nicht persönlich!!- keine Lust mich in einen solchen Spaghetti-Code reinzudenken, nachzuvollziehen und vielleicht zu optimieren.

Daher die Empfehlung das Teil erstmal zu entzerren, damit machst du es dir selbst und anderen einfach leichter.

Das ist aber meine Meinung, andere Kollegen lieben solche Einzeiler

 

blub

Link zu diesem Kommentar

Mir gehts da anders :D aber blub hat recht, so einen Spagehtti Code muss man nach und nach im Kopf durchgehen und ggf. testen damit das gewünschte Ergebnis zusammen kommt.

 

Es geht ohne measure-object dazu müsste man aber ziemlich genau wissen wie Du dir deine Ausgabe vorstellt.

 

Eine Liste oder auch nur eine einzelne Zeile.

 

Es gibt da immer viele Möglichkeite was aber auch gut so ist. :)

 

achso und -lt bedeutet "less than" also "kleiner als"

Link zu diesem Kommentar

So, mit deinem Code bekomme ich die jüngste Datei, aber ob die jünger als 24h ist, weiss ich nicht und eine Ausgabe gibts auch nicht.

Daher hier mal mit deinem Code weitergemacht:

if ((Get-ChildItem -Path "C:\tmp\" | Sort-Object LastWriteTime -Descending | Select-Object -First 1).LastWriteTime -lt (Get-Date).adddays(+1)) {
Write-Host "kleiner 24h"
} else {
Write-Host "größer 24h"
}

 

Auch kein Spaghetti-Code, da sollten alle Anforderungen erfüllt sein :cool::cool:

bearbeitet von mamamia
Code angepasst
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...