nognog
Goto Top

Powershell: LastWriteTime vergleichen

Hallo Zusammen

Ich schreibe momentan ein Script, bei welchem ich in einem Folder die LastWriteTime der Files vergleichen muss.
Es geht darum, dass ich veraltete Files löschen muss. Dies kann man sich so vorstellen.

Files mit "18a" im Namen löschen.
Files mit "19a" NICHT löschen.
Files mit "20a" auch NICHT löschen.

Ich muss das Script so schreiben, dass ich die LastWriteTime von "19a" herausfinden muss und dann alle Files, die vor diesem Datum erstellt oder bearbeitet wurden gelöscht werden. Diese Files sind alle im gleichen Ordner. Wie kann ich nun die LastWriteTime vergleichen?

Hier sind meine Resultate:

  1. Aktuelle Files
$version = "*19a*"
$file_version = Get-ChildItem "C:\Files" -Recurse -Include ($version) | sort LastWriteTime | select LastWriteTime -First 1
$path = Get-Childitem "C:\Files" -Exclude ($version)

If ((!$path)){
Write-Host "Meldung: Es wurden keine Dateien gelöscht `n"
}
foreach($file in $path)
{
$writetime = Get-ChildItem $file | sort LastWriteTime |select LastWriteTime -First 1
if($writetime -lt $file_version)
{
Write-Host "True"
}
else{
Write-Host "False"
}
}
Leider funktioniert dies nicht...

Kann mir Jemand weiterhelfen?

Danke im Voraus!

Freundliche Grüsse

NogNog

Content-ID: 569470

Url: https://administrator.de/contentid/569470

Ausgedruckt am: 20.11.2024 um 00:11 Uhr

emeriks
Lösung emeriks 04.05.2020 aktualisiert um 13:26:18 Uhr
Goto Top
Hi,
spontan fällt mir ein
  1. Benutze bitte Code Tags!
  2. statt
Get-ChildItem "C:\Files" -Recurse -Include ($version)  
nimm
Get-ChildItem "C:\Files\$version" -Recurse  
3. Du willst das aktuellste Datum. Also umgekehrt sortieren
sort LastWriteTime -Descending
oder
select LastWriteTime -Last 1
Die dann zu löschenden wären alle, welche jünger sind als das gefundene Datum
Get-ChildItem "C:\Files\*18a*" -Recurse | Where {$_.LastWriteTime -lt $file_version} | Remove-Item  

E.
NogNog
NogNog 04.05.2020 um 13:39:31 Uhr
Goto Top
Das hat mich schon weitergebracht. Nun kommt aber dieser Fehler:

"02/24/2020 08:31:24" konnte nicht mit "@{LastWriteTime=05/04/2020 09:56:41}" verglichen werden. Fehler: "Der Wert "@{LastWriteTime=04.05.2020 09:56:41}" kann nicht in den Typ "System.DateTime" konvertiert werden. Fehler: "Die Hashtabelle kann nicht in ein Objekt folgenden Typs konvertiert werden:
System.DateTime. Eine Hashtabelle-in-Objekt-Konvertierung wird im eingeschränkten Sprachmodus oder in einem Datenabschnitt nicht unterstützt.""
In Zeile:25 Zeichen:85


ersion" -Recurse | Where {$_.LastWriteTime -lt $image_version} | Remo


CategoryInfo : InvalidOperation: ( , RuntimeException
FullyQualifiedErrorId : ComparisonFailure


Nun muss ich noch herausfinden wie ich es in System.DateTime kovertieren kann. Ich informiere mich mal. Wenn aber Jemand eine Lösung hat wäre ich dankbar!
emeriks
Lösung emeriks 04.05.2020 um 13:40:38 Uhr
Goto Top
$file_version = (Get-ChildItem "C:\Files\$version" | sort LastWriteTime | select LastWriteTime -Last 1).LastWriteTime