$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
}
Samstag, 23. November 2013
Powershell: Dateiversionierung
Labels:
Powershell,
Programmierung
Abonnieren
Kommentare zum Post (Atom)
Keine Kommentare:
Kommentar veröffentlichen