newbie1
Goto Top

Logdateien mit Powershell erstellen

Hallo Forengemeinde,

ich habe ein funktionierendes PS-Script, aber mit der LogFile-Erstellung bin ich nicht so zufrieden.

# Dieses Skript loescht mir alle Dateien auf Laufwerk Z, die aelter als 90 Tage sind.

$Path = "Z:\archiv\test"  
$Daysback = "-90"  
$LogFile = "C:\temp\online.txt"   
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)

start-transcript "$LogFile $(get-date -format yyyy_MM_dd).txt"  
Get-ChildItem $Path -Recurse | Where-Object { $_.LastWriteTime -lt $DatetoDelete } | Remove-Item
stop-transcript

Wer kann mir bitte weiterhelfen, wie ich dem Script mitteilen kann, dass ich
- alle gelöschten Dateien, Ordner
aufgelistet bekomme

Für Eure Hilfe im Voraus besten Dank.

Content-ID: 650819

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

Ausgedruckt am: 05.11.2024 um 17:11 Uhr

erikro
erikro 11.02.2021 um 17:53:13 Uhr
Goto Top
Moin,

Zitat von @newbie1:
ich habe ein funktionierendes PS-Script, aber mit der LogFile-Erstellung bin ich nicht so zufrieden.
[...]
Wer kann mir bitte weiterhelfen, wie ich dem Script mitteilen kann, dass ich
- alle gelöschten Dateien, Ordner
aufgelistet bekomme

Da kommst Du mit start-transscript so nicht weiter, weil das nur das logt, was auch auf der Konsole steht bzw. stehen würde. Bei Deinem Konstrukt steht da bei Erfolg aber nichts. Das wäre eine Lösung (statt Zeile 10):

$files = Get-ChildItem $Path -Recurse | Where-Object { $_.LastWriteTime -lt $DatetoDelete }
foreach($file in $files) {

    try {

      remove $file -ErrorAction Continue
      Write-Output "$file.fullname wurde gelöscht."  

    }
    catch {

        Write-Error "$file.fullname wurde nicht gelöscht!"  

    }

}

hth

Erik
Daemmerung
Daemmerung 11.02.2021 um 20:20:22 Uhr
Goto Top
Moin,

ich bin immer der Ansicht: Man muss das Rad nicht immer neu erfinden. Deshalb hier mal ein fertiges PowerShell-Modul, dass dir das Logging übernimmt:
https://www.powershellgallery.com/packages/Logging/4.8.0

musst du natürlich entsprechend einbinden. face-smile

Viele Grüße
Daemmerung
newbie1
newbie1 12.02.2021 um 09:37:32 Uhr
Goto Top
Hallo Erik,

Danke für deine Unterstützung.

Habe es in meinem Script eingebunden, aber es hat nichts geloggt. face-sad

Was habe ich da falsch gemacht?
newbie1
newbie1 12.02.2021 um 09:38:03 Uhr
Goto Top
Hallo Daemmerung,

danke für die Info, werde ich mir mal anschauen. face-smile
erikro
erikro 12.02.2021 aktualisiert um 09:56:40 Uhr
Goto Top
Moin,

Zitat von @newbie1:
Habe es in meinem Script eingebunden, aber es hat nichts geloggt. face-sad

Was habe ich da falsch gemacht?

Woher soll ich das wissen, wenn Du weder Fehlermeldungen noch Code postest? face-wink

Liebe Grüße

Erik
newbie1
newbie1 12.02.2021 um 11:00:57 Uhr
Goto Top
Hallo Erik,

sorry, da hat wohl was nicht hingehauen:
# Dieses Skript loescht mir alle Dateien auf Laufwerk Z, die aelter als 90 Tage sind.

$Path = "Z:\archiv\test"  
$Daysback = "-90"  
$LogFile = "C:\temp\online.txt"   
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)

start-transcript "$LogFile $(get-date -format yyyy_MM_dd).txt"  

$files = Get-ChildItem $Path -Recurse | Where-Object { $_.LastWriteTime -lt $DatetoDelete }
foreach($file in $files) {

    try {

      remove $file -ErrorAction Continue
      Write-Output "$file.fullname wurde gelöscht."  

    }
    catch {

        Write-Error "$file.fullname wurde nicht gelöscht!"  

    }

}

stop-transcript

Bekomme hier weder eine Fehlermeldung noch einen Eintrag.

Er protokolliert mir nicht was er getan hat. face-sad

Vielen Dank für deine Unterstützung
erikro
Lösung erikro 12.02.2021 um 14:11:15 Uhr
Goto Top
Moin,

$files = Get-ChildItem c:\test\transkript -Recurse -File
start-transcript "c:\test\transcript_test.txt"  
foreach($file in $files) {

    try {

      remove-item $file.FullName -ErrorAction Continue
      Write-Output "$($file.fullname) wurde gelöscht."  

    }
    catch {

        Write-Error "$($file.fullname) wurde nicht gelöscht!"  

    }

}

stop-transcript

läuft hier wie Schmitz' Katze. Allerdings finde ich den Dateinamen, in den Du schreiben willst, etwas komisch.

hth

Erik
mayho33
mayho33 13.02.2021 um 10:52:54 Uhr
Goto Top
Wenn du Zeit und Lust hast, dich einzulesen, kann ich NLog empfehlen.

So schreibe ich meine Logs.