Sie sind auf der Suche nach einem einfachen PowerShell Script zur automatischen Erstellung und Versionierung von Logfiles? Dann sind Sie hier genau richtig. Denn im Folgenden zeige ich Ihnen, wie Sie Logfiles schreiben und diese automatisiert in spezifischen Backup Ordnern versionieren können. Sie kennen sicherlich das Problem, dass immer nur die aktuellste Version eines Logfiles behalten werden soll, um nicht den Überblick zu verlieren. Um diese Übersichtlichkeit zu gewährleisten, habe ich ein PowerShell Script entwickelt, mit dem jeweils nur die aktuellste Version eines Logfiles im konfigurierbaren Ordner [powershell light=“true“]C:\Temp\Logs[/powershell] angelegt wird. Diese Konfiguration wird in Zeile 3 mit der Variable [powershell light=“true“]$QuellPfad[/powershell] angegeben. Die alten Logfiles werden als Backup in den folgenden konfigurierbaren Ordner verschoben werden: [powershell light=“true“]C:\Temp\Logs\Backup[/powershell] Diese Konfiguration wird in Zeile 4 mit der Variable [powershell light=“true“]$BackupPfad[/powershell] vorgenommen. Mit der Variable [powershell light=“true“]$Muster[/powershell] in Zeile 5 kann bestimmt werden, nach welcher Art von Dateien, das Script suchen soll. In meinem Beispiel sucht das Script nach allen Dateien, die das Datei-Format „.log“ haben. [powershell]$counter = 0 # Counter für das Log File $Logfile = "C:\temp\Logs\$ou_$(gc env:computername)-$counter.log" # Logfile Pfad $QuellPfad = ‚C:\Temp\Logs‘ $BackupPfad = "C:\Temp\Logs\Backup" $Muster = "*-*.log" $SuchMuster = "$QuellPfad\$Muster" # Testn ob der Pfad bereits erstellt ist if(Test-Path($QuellPfad)) { echo ‚Log folder exists already‘ # Datei(en) einlesen $Files = Get-Item -Path $SuchMuster if ($Files) { foreach ($File in $Files) { # Istversion in Backup Ordner kopieren falls noch nicht vorhanden if (-not (Test-Path "$BackupPfad\$($file.name)")) { Write-Host "Sichere $($file.name) nach $BackupPfad" $null = Copy-Item $file $BackupPfad } # Name zerlegen [String]$TeilName = $File.BaseName.Substring(0,($file.BaseName.LastIndexOf("-"))) [int]$IstVersion = $file.BaseName.Split("-")[2] [String]$Extension = $file.Extension # Version hochzählen [string]$SollVersion = $IstVersion + 1 # Neuen Dateinamen zusammensetzen [String]$DateiNameNeu = "{0}-{1}{2}" -f $TeilName,$Sollversion,$Extension $counter = $counter + 1 # Datei kopieren if (-not (Test-Path "$QuellPfad\$DateiNameNeu")) { Write-Host "Kopiere $DateiNameNeu in $QuellPfad" $Null = $File.CopyTo("$QuellPfad\$DateiNameNeu") } # Alte Version löschen. Zum "scharf" machen den WhatIf Schalter entfernen Write-Host "Lösche $($File.Fullname)" Remove-Item $File } } else { Write-Warning "Keine passenden Dateien in $Quellpfad nach Muster `"$Muster`" gefunden" } } else { New-Item -Path $QuellPfad -ItemType directory New-Item -Path $BackupPfad -ItemType directory echo ‚Logfile: C:\temp\Logs‘ } # Neue Ereignisse in das Logfile schreiben Function LogWrite { Param ([string]$logstring) Add-content $Logfile -value $logstring }[/powershell] Viel Erfolg beim ausprobieren des PowerShell Scirpts.     Bildquelle: Pixabay