powershell add file to zip

16,711

Solution 1

The CopyHere function just takes a string that is the path to your file. For example:

$folder.copyhere( "c:\PathToYourFile\YourFile" )

Tip:

The Powershell Pack Module has some useful tools, one of which is a zip utility, which will reduce your code to 1 line:

Copy-ToZip "c:\PathToYourFile\YourFile" -ZipFile a.zip

Solution 2

To create a zip archive:

powershell Compress-Archive %file% %file%.zip

To replace the archive (with a different file):

powershell Compress-Archive -force %different_file% %file%.zip

To add a file to the (existing) archive:

powershell Compress-Archive -update %2nd_file% %file%.zip

Tested on Win 10 CMD Powershell 5.1

Share:
16,711
mjsolo
Author by

mjsolo

Updated on June 09, 2022

Comments

  • mjsolo
    mjsolo over 1 year

    I'm trying to add a file to a zip file using powershell

    I can create the zip file but can't work out how to add my file to it

    I'm using

    $zipfilename = 'c:\cwRsync\backup.zip'
    $file = 'c:\cwRsync\backup.log'
    set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
    (dir $zipfilename).IsReadOnly = $false
    $zipfile = (New-Object -ComObject shell.application).NameSpace($zipfilename)
    $zipfile.MoveHere($file.FullName)
    

    This create the zip file but doesn't add the new file

    I tried the following code I found on stackoverflow which works

    $zipfilename = "a.zip"
    set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
    $app = new-object -com shell.application
    $zip = ( get-item a.zip ).fullname
    $folder = $app.namespace( $zip )
    $item = new-item file.txt -itemtype file -value "Mooo" -force
    $folder.copyhere( $item.fullname )
    

    but that add a file created by powershell whereas I want to add an existing file

    Any help would be much appreciated