Powershell die log-Dateien gelöscht
Das Skript sucht in allen Ordnern und Unterordnern und löschen Sie die älteste Datei, wenn die Anzahl der Dateien ist>5. Alles funktioniert gut, aber ich möchte mich auch anmelden, alle Dateien löschen, die als Datensatz in eine log-Datei.
Wie kann ich ein Protokoll der gelöschten Dateien ?
Hier das Script.
$path = "C:\test\1"
$keep = 3
$strLogFileName = "c:\test\yourlogfile.log";
$dirs = Get-ChildItem -Path $path -Recurse | Where-Object {$_.PsIsContainer}
foreach ($dir in $dirs) {
$files = Get-ChildItem -Path $dir.FullName | Where-Object { -not $_.PsIsContainer -and $_.name -like "*.zip"}
if ($files.Count -gt $keep) {
$files | Sort-Object CreationTime -desc| Select-Object -First ($files.Count - $keep) | Remove-Item -Force
***{write-host “Deleting File $File” -foregroundcolor “Red”; Remove-Item $File | out-null}***
}
}
InformationsquelleAutor zero1de | 2013-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einen guten start hier:
Leider
Remove-Item
keine Ausgabe, können Sie mooch aus, aber Sie haben bereits Ihre eigenen output-Nachricht, damit wir aufbauen können. Sie können jedes beliebige Ausgabe in eine Datei mitOut-File
. Die append-flag fügt die neuen Inhalte an das Ende der Datei, und Sie nicht haben, um zu überprüfen, ob die Datei vorhanden ist.Dass Sie gar nicht zu zählen-Schreiben-Ausgang, wenn Sie eine kürzere Linie.
Hier ist ein Beispiel, das zeigt, wo Sie brauchen, um code hinzuzufügen. Ich habe markiert vorhandenen code mit "...", und ich habe bewegt der Löschung eine Nachricht in einer Variablen, so dass Sie es wiederverwenden an einem anderen Ort. Dies setzt Voraus, dass Sie gespeichert haben die ausgewählten Dateinamen in einer variable.
InformationsquelleAutor Anthony Neace
Zuerst müssen Sie eine
log-message
Typ Funktion in Ihrem Skript, das log der Nachricht ein .log-Datei. Dann chekc wenn die Datei vorhanden ist und wenn nicht, dann erstellen Sie eine Datei.Dann einfach löschen, bevor Sie Ihre Datei mit
Remove-Item
Befehl, den Sie verwenden könnenLog-Message
- Funktion zur log-Meldung in die log-Datei.Komplette script
Überprüfen Sie meine aktualisierte Antwort. Ich habe bisher auch.
sind Sie wirklich Gott mit powershell 🙂 Eine Letzte Frage, wie kann ich löschen, nur die älteste Datei und nicht die neueste ? Vielen thx für deine Hilfe
Thx ich habe es gefunden: Sort-Object "LastWriteTime"
Sie sollten sich Fragen, dieses neue problem in einem neuen Frage-und upvote und/oder annehmen, Antworten, die Lösung des vorherigen Problems. Bespannung Mitul entlang, ohne Anrechnung der ihm angemessen ist, ist sehr unhöflich und kann entmutigen Benutzer aus, was Ihnen in die Zukunft.
InformationsquelleAutor Mitul