Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

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

README.md

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 as a NuGet package and at PowerShell Gallery.

NuGet 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

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

You can’t perform that action at this time.