Skip to content

thoemmi/7Zip4Powershell

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

7Zip4Powershell

Powershell module for creating and extracting 7-Zip archives supporting Powershell's WriteProgress API.

Screenshot

Note

Please note that this repository is not maintained anymore. I've created it a couple of years ago to fit my own needs (just compressing a single folder). I love that lots of other users find my package helpful.

I really appreciated if you report issues or suggest new feature. However, I don't use this package myself anymore, and I don't have the time to maintain it appropriately. So please don't expect me to fix any bugs. Any Pull Request is welcome though.

Usage

The syntax is simple as this:

Expand-7Zip
    [-ArchiveFileName] <string>
    [-TargetPath] <string>
    [-Password <string>] | [-SecurePassword <securestring>]
    [<CommonParameters>]

Compress-7Zip
    [-ArchiveFileName] <string>
    [-Path] <string>
    [[-Filter] <string>]
    [-OutputPath] <string>
    [-Format <OutputFormat> {Auto | SevenZip | Zip | GZip | BZip2 | Tar | XZ}]
    [-CompressionLevel <CompressionLevel> {None | Fast | Low | Normal | High | Ultra}]
    [-CompressionMethod <CompressionMethod> {Copy | Deflate | Deflate64 | BZip2 | Lzma | Lzma2 | Ppmd | Default}]
    [-Password <string>] | [-SecurePassword <securestring>]
    [-CustomInitialization <ScriptBlock>]
    [-EncryptFilenames]
    [-VolumeSize <int>]
    [-FlattenDirectoryStructure]
    [-SkipEmptyDirectories]
    [-PreserveDirectoryRoot]
    [-DisableRecursion]
    [-Append]
    [<CommonParameters>]

Get-7Zip
    [-ArchiveFileName] <string[]>
    [-Password <string>] | [-SecurePassword <securestring>]
    [<CommonParameters>]

Get-7ZipInformation
    [-ArchiveFileName] <string[]>
    [-Password <string>] | [-SecurePassword <securestring>]
    [<CommonParameters>]

It works with both x86 and x64 and uses SevenZipSharp as a wrapper around 7zip’s API.

Jason Fossen wrote the article PowerShell 7-Zip Module Versus Compress-Archive with Encryption where he describes some usage scenarios with 7Zip4PowerShell.

Where to get it

7Zip4Powershell is published at PowerShell Gallery.

https://www.powershellgallery.com/packages/7Zip4Powershell

Customization

Compress-7Zip accepts a script block for customization. The script block gets passed the current SevenZipCompressor instance. E.g. you can set the multithread mode this way:

$initScript = {
    param ($compressor)
    $compressor.CustomParameters.Add("mt", "off")
}

Compress-7Zip -Path . -ArchiveFileName demo.7z -CustomInitialization $initScript

A list of all custom parameters can be found here.

Changelog

v2.2

v2.1

v2.0

  • Now based on .NET Standard 2.0 (thanks to @kborowinski for testing)

v1.13

v1.12

  • Uses PowerShell 5 reference assembly, which reduces the package size dramatically (#61, contributed by @kborowinski)

v1.11

  • Replaces SevenZipSharp.Net45 with Squid-Box.SevenZipSharp library and adds new parameter PreserveDirectoryRoot for Compress-7zip. (#57, contributed by @kborowinski)
  • Adds new parameter OutputPath for Compress-7Zip (#60, contributed by @iRebbok)

v1.10

v1.9

  • Updated 7-Zip dlls to 16.04
  • Disabled the CustomInitialization parameter for Expand-7Zip, will be removed in future versions.

v1.8

January 25, 2017

  • Added optional SecurePassword parameter of type SecureString to all cmdlets. (#34, #36)

v1.7.1

October 27, 2016

  • Compression with password encryption could cause an exception (#33)

v1.7

October 16, 2016

  • If Format is not specified, it is inferred from the file extension of ArchiveFileName (#24, proposed by @onyxhat)
  • Added new parameter VolumeSize to specify the colume size for Compress-7Zip (#25, proposed by @rgel)
  • Added new switches FlattenDirectoryStructure, SkipEmptyDirectories, and DisableRecursion to Compress-7Zip (#27, contributed by @itmagination)
  • Added new switch Append to Compress-7Zip to append files to an existing archive (#30, inspired by @itmagination)

v1.6

June 15, 2016

  • added Get-7ZipInformation cmdlet
  • use default compression method in Compress-7Zip (previously it was PPMd, for whatever reason) (#11)
  • allow piped input for Get-7Zip (#15)
  • use WriteDebug instead of Write of logging (#13)

v1.5

June 5, 2016

  • Added parameter -EncryptFilenames to Compress-7Zip (#10, requested by @JasonFossen)

v1.4

May 29, 2016

  • Added Get-7Zip to get a list of files in an archive (#9, contributed by @gigi81)

v1.3

30 March, 2016

  • Added Password parameter to both Compress-7Zip and Expand-7Zip (#8)

Motivation

I've written and maintaining the module just for fun and to serve my own needs. If it's useful for you too, that's great. I don't demand anything in return.

However, if you like this module and feel the urge to give something back, a coffee or a beer is always appreciated. Thank you very much in advance.

PayPal.me