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.
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 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.
7Zip4Powershell is published at PowerShell Gallery.
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 $initScriptA list of all custom parameters can be found here.
- Updates of 7-Zip libraries to version 24.09 (contributed by @kborowinski in #92)
 
- Updates of 7-Zip libraries to version 24.08 (contributed by @kborowinski in #91)
 
- 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)
 
- Updates 7-Zip libraries to 23.01 (contributed by @kborowinski in #85)
 
- Updates 7-Zip libraries to 22.01 and NuGet packages (contributed by @kborowinski in #84)
 - Adds 
TempFolderparameter toCompress-7Zip(requested in #78) 
- Updates 7-Zip libraries to 22.00 (contributed by @kborowinski in #80)
 - Fixes broken link in readme (contributed by @Mike-Crowley in #77)
 
- Updates 7-Zip libraries to 21.07 (contributed by @kborowinski in #75)
 
- Now based on .NET Standard 2.0 (thanks to @kborowinski for testing)
 
- Improved handling of paths in 
ArchiveFileName(#63 and #65, contributed by @iRebbok) - Updated readme (#64, contributed by @kborowinski)
 
- Uses PowerShell 5 reference assembly, which reduces the package size dramatically (#61, contributed by @kborowinski)
 
- 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) 
- Updated 7-Zip dlls to 19.00 (#56, contributed by @kborowinski)
 
- Updated 7-Zip dlls to 16.04
 - Disabled the 
CustomInitializationparameter forExpand-7Zip, will be removed in future versions. 
January 25, 2017
- Added optional 
SecurePasswordparameter of typeSecureStringto all cmdlets. (#34, #36) 
October 27, 2016
- Compression with password encryption could cause an exception (#33)
 
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) 
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) 
June 5, 2016
- Added parameter 
-EncryptFilenamestoCompress-7Zip(#10, requested by @JasonFossen) 
May 29, 2016
- Added 
Get-7Zipto get a list of files in an archive (#9, contributed by @gigi81) 
30 March, 2016
- Added 
Passwordparameter to bothCompress-7ZipandExpand-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.
