7Zip4Powershell
Powershell module for creating and extracting 7-Zip archives supporting Powershell's WriteProgress
API.
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>]
[-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]
[-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.
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.9
- Updated 7-Zip dlls to 16.04
- Disabled the
CustomInitialization
parameter forExpand-7Zip
, will be removed in future versions.
v1.8
January 25, 2017
- Added optional
SecurePassword
parameter of typeSecureString
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 ofArchiveFileName
(#24, proposed by @onyxhat) - Added new parameter
VolumeSize
to specify the colume size forCompress-7Zip
(#25, proposed by @rgel) - Added new switches
FlattenDirectoryStructure
,SkipEmptyDirectories
, andDisableRecursion
toCompress-7Zip
(#27, contributed by @itmagination) - Added new switch
Append
toCompress-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 ofWrite
of logging (#13)
v1.5
June 5, 2016
- Added parameter
-EncryptFilenames
toCompress-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 bothCompress-7Zip
andExpand-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.