Compress Files with Windows PowerShell

Here are a few fuctions on how to create, update and extract a zip file within powershell. 

1. Create a New Zip

function New-Zip{

param([string]$zipfilename)
set-content $zipfilename (“PK” + [char]5 + [char]6 + (“$([char]0)” * 18))
(dir $zipfilename).IsReadOnly = $false

}

usage: new-zip c:demomyzip.zip

2. Add files to a zip via a pipeline

function Add-Zip
{

param([string]$zipfilename)
if(-not (test-path($zipfilename)))

{

set-content $zipfilename (“PK” + [char]5 + [char]6 + (“$([char]0)” * 18))
(dir $zipfilename).IsReadOnly = $false

}

$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
foreach($file in $input)
 {
            $zipPackage.CopyHere($file.FullName)
            Start-sleep -milliseconds 500
 }

}

usage: dir c:zipFiles*.* -Recurse | add-Zip c:zipFile.zip

3. List the files in a zip

function Get-Zip

{

param([string]$zipfilename)
if(test-path($zipfilename))

{

$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$zipPackage.Items() | Select Path

}

}

usage: Get-Zip c:zipFile.zip

4. Extract the files form the zip

function Extract-Zip

{

param([string]$zipfilename, [string] $destination)
if(test-path($zipfilename))

{

$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())

}

}

usage: extract-zip c:zipFile.zip c:destination


Leave a reply:

*

*

Your email address will not be published. Required fields are marked *