- Notifications
You must be signed in to change notification settings - Fork65
Powershell module for creating and extracting 7-Zip archives
License
thoemmi/7Zip4Powershell
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Powershell module for creating and extracting 7-Zip archives supporting Powershell'sWriteProgress
API.
Important
Please note that this repository is not maintained anymore. I've created it a coupleof years ago to fit my own needs (just compressing a single folder). I love that lotsof 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 tomaintain it appropriately. So please don't expect me to fix any bugs. Any PullRequest 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 usesSevenZipSharp as a wrapper around 7zip’s API.
Jason Fossen wrote the articlePowerShell 7-Zip Module Versus Compress-Archive with Encryptionwhere he describes some usage scenarios with 7Zip4PowerShell.
7Zip4Powershell is published atPowerShell Gallery.
Compress-7Zip
accepts a script block for customization. The script block gets passed the currentSevenZipCompressor
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 foundhere.
- 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
EncryptionMethod
toCompress-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
TempFolder
parameter 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)
- ReplacesSevenZipSharp.Net45 withSquid-Box.SevenZipSharp library and adds new parameter
PreserveDirectoryRoot
forCompress-7zip
.(#57, contributed by@kborowinski) - Adds new parameter
OutputPath
forCompress-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
CustomInitialization
parameter forExpand-7Zip
, will be removed in future versions.
January 25, 2017
- Added optional
SecurePassword
parameter of typeSecureString
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 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)
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)
June 5, 2016
- Added parameter
-EncryptFilenames
toCompress-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 bothCompress-7Zip
andExpand-7Zip
(#8)
I've written and maintaining the module just for fun and to serve my own needs. Ifit'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 coffeeor a beer is always appreciated. Thank you very much in advance.
About
Powershell module for creating and extracting 7-Zip archives