7Zip4Powershell
Powershell module for creating and extracting 7-Zip archives
Install / Use
/learn @thoemmi/7Zip4PowershellREADME
7Zip4Powershell
Powershell module for creating and extracting 7-Zip archives supporting Powershell's WriteProgress API.

[!IMPORTANT] 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>]
[-EncryptionMethod <ZipEncryptionMethod> {ZipCrypto | Aes128 | Aes192 | Aes256}]
[-CustomInitialization <ScriptBlock>]
[-TempFolder <string>]
[-IncludeHidden]
[-IncludeSystem
[-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 x86, x64, and ARM64 and uses SevenZipSharp as a wrapper around 7zip's API.
Jason Fossen wrote the article PowerShell 7-Zip Module Versus Compress-Archive with Encryption (original article no longer available, archived version linked) where he describes some usage scenarios with 7Zip4PowerShell.
Where to get it
7Zip4Powershell is published at PowerShell Gallery.
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.8]
[v2.7]
- Updates of 7-Zip libraries to version 24.09 (contributed by @kborowinski in #92)
[v2.6]
- Updates of 7-Zip libraries to version 24.08 (contributed by @kborowinski in #91)
[v2.5]
- Workaround for NullReferenceException when extracting multiple 7zip archives simultaneously on PS 7.4.0 (contributed by @kborowinski in #89)
- Adds new parameter
EncryptionMethodtoCompress-7Zip - Updates of 7-Zip libraries to version 24.06 (support for ZSTD decompression ) (contributed by @kborowinski in #90)
- Updates Squid-Box.SevenZipSharp nuget package to version 1.6.2.24 (final release -the project has been archived) (contributed by @kborowinski in #90)
- Adds support for Wim (contributed by @pysj in #87)
v2.4
- Updates 7-Zip libraries to 23.01 (contributed by @kborowinski in #85)
v2.3
- Updates 7-Zip libraries to 22.01 and NuGet packages (contributed by @kborowinski in #84)
- Adds
TempFolderparameter toCompress-7Zip(requested in #78)
v2.2
- Updates 7-Zip libraries to 22.00 (contributed by @kborowinski in #80)
- Fixes broken link in readme (contributed by @Mike-Crowley in #77)
v2.1
- Updates 7-Zip libraries to 21.07 (contributed by @kborowinski in #75)
v2.0
- Now based on .NET Standard 2.0 (thanks to @kborowinski for testing)
v1.13
- Improved handling of paths in
ArchiveFileName(#63 and #65, contributed by @iRebbok) - Updated readme (#64, contributed by @kborowinski)
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
PreserveDirectoryRootforCompress-7zip. (#57, contributed by @kborowinski) - Adds new parameter
OutputPathforCompress-7Zip(#60, contributed by @iRebbok)
v1.10
- Updated 7-Zip dlls to 19.00 (#56, contributed by @kborowinski)
v1.9
- Updated 7-Zip dlls to 16.04
- Disabled the
CustomInitializationparameter forExpand-7Zip, will be removed in future versions.
v1.8
January 25, 2017
- Added optional
SecurePasswordparameter of typeSecureStringto 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
Formatis not specified, it is inferred from the file extension ofArchiveFileName(#24, proposed by @onyxhat) - Added new parameter
VolumeSizeto specify the colume size forCompress-7Zip(#25, proposed by @rgel) - Added new switches
FlattenDirectoryStructure,SkipEmptyDirectories, andDisableRecursiontoCompress-7Zip(#27, contributed by @itmagination) - Added new switch
AppendtoCompress-7Zipto append files to an existing archive (#30, inspired by @itmagination)
v1.6
June 15, 2016
- added
Get-7ZipInformationcmdlet - use default compression method in
Compress-7Zip(previously it was PPMd, for whatever reason) (#11) - allow piped input for
Get-7Zip(#15) - use
WriteDebuginstead ofWriteof logging (#13)
v1.5
June 5, 2016
- Added parameter
-EncryptFilenamestoCompress-7Zip(#10, requested by @JasonFossen)
v1.4
May 29, 2016
- Added
Get-7Zipto get a list of files in an archive (#9, contributed by @gigi81)
v1.3
30 March, 2016
- Added
Passwordparameter to bothCompress-7ZipandExpand-7Zip(#8)
Motivation
I've written and maintaining the module just for fun and to serve my own needs. I
