Powershell module for creating and extracting 7-Zip archives
Clone or download
Latest commit 6a2ed49 Aug 16, 2018



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



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.


The syntax is simple as this:

    [-ArchiveFileName] <string> 
    [-TargetPath] <string>  
    [-Password <string>] | [-SecurePassword <securestring>]

    [-ArchiveFileName] <string> 
    [-Path] <string> 
    [[-Filter] <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>]
    [-VolumeSize <int>]

    [-ArchiveFileName] <string[]>
    [-Password <string>] | [-SecurePassword <securestring>]

    [-ArchiveFileName] <string[]> 
    [-Password <string>] | [-SecurePassword <securestring>]

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


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.



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


January 25, 2017

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


October 27, 2016

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


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)


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)


June 5, 2016

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


May 29, 2016

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


30 March, 2016

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


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.