Logfiles archivieren u. komprimieren

Logfiles archivieren u. komprimieren

Dateien werden in ein neues Verzeichnis verschoben und dort zu einem ZIP-File komprimiert. Danach werden die verschobenen Dateien gelöscht. Diese Routine ist für mehrere Unterordner innerhalb eines Ordners gedacht.

Add-Type -AssemblyName system.io.compression.filesystem

Get-ChildItem   D:\ADLDS-SyncLogfiles\

$folders =@("Unterordner1","Unterordner2")

foreach($folder in $folders)
    {

    $sourcefiles = Get-ChildItem "D:\SyncLogfiles\$folder\*.txt"

    if($sourcefiles.Count -gt 0 )
        {
        $path = ($sourcefiles[0]).Directory.FullName
        $archivePath = "$path\Archive"
        if(!(Test-Path -Path $archivePath))
            {
            New-Item -ItemType Directory $archivePath
            }
        $DateFolder = $archivePath.ToString() + "\" + (get-date -Format yyyyMMddHHmm).ToString() 
        if(!(Test-Path -Path $DateFolder))
            {
            New-Item -ItemType Directory $DateFolder
            }
        $sourcefiles |  Move-Item -Destination $DateFolder

        [io.compression.zipfile]::CreateFromDirectory($DateFolder,"$DateFolder.zip")
        Remove-Item -Path $DateFolder -Recurse -Force
        }

    }