function to zip and archive files separately

Tagged: ,

This topic contains 2 replies, has 2 voices, and was last updated by Profile photo of Sanjaya Luintel Sanjaya Luintel 1 year, 6 months ago.

  • Author
  • #24530
    Profile photo of Sanjaya Luintel
    Sanjaya Luintel

    I have a folder with a number of IIS Logs. I would like to zip and archive the IIS logs but when I zip and archive, I do not want to store everything in 1 zip folder. As a matter of fact, I would like to create 1 zip folder per log and want the folder to have the same basename as the log file.

    I am trying to use this function to achieve what I want:

    function add-zip{
    param($source, $destination)

    $name = Get-ChildItem $source | Select-Object basename

    foreach($obj in $name)
    Add-Type -Assembly System.IO.Compression.FileSystem
    $compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
    $zipfilename = $destination + "\" + $obj.BaseName + ".zip"

    $zipfilename, $compressionLevel, $false)


    Using the function, I was able to get the zip folders to have the same name as the IIS logs themselves. However, all the zip files present at the source folder got copied inside every zip folder. How do I make sure that every zip folder only gets 1 log file?
    I would appreciate the help.


  • #24534
    Profile photo of Matt Bloomfield
    Matt Bloomfield

    The CreateFromDirectory method creates the .ZIP file from the specified directory. You would need to create the empty .ZIP file first and then add the file as an entry. You might want to consider installing the [url='']PowerShell Community Extensions[/url] which include a Write-Zip cmdlet. Your task then becomes as simple as:

    $files = Get-ChildItem F:\__Temp
    foreach ($file in $files) {
        Write-Zip $file "F:\__Temp\1\$" -Level 9
  • #24552
    Profile photo of Sanjaya Luintel
    Sanjaya Luintel

    That worked like a charm. Thank you very much.

You must be logged in to reply to this topic.