• Stars
    star
    351
  • Rank 120,906 (Top 3 %)
  • Language
    C#
  • License
    GNU Lesser Genera...
  • Created about 12 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Powershell module for creating and extracting 7-Zip archives

7Zip4Powershell

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

Screenshot

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>]
    [-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>]
    [-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.

Where to get it

7Zip4Powershell is published at PowerShell Gallery.

https://www.powershellgallery.com/packages/7Zip4Powershell

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.3

  • Updates 7-Zip libraries to 22.01 and NuGet packages (contributed by @kborowinski in #84)
  • Adds TempFolder parameter to Compress-7Zip (requested in #78)

v2.2

v2.1

v2.0

  • Now based on .NET Standard 2.0 (thanks to @kborowinski for testing)

v1.13

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 PreserveDirectoryRoot for Compress-7zip. (#57, contributed by @kborowinski)
  • Adds new parameter OutputPath for Compress-7Zip (#60, contributed by @iRebbok)

v1.10

v1.9

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

v1.8

January 25, 2017

  • Added optional SecurePassword parameter of type SecureString 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 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)

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 of Write of logging (#13)

v1.5

June 5, 2016

  • Added parameter -EncryptFilenames to Compress-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 both Compress-7Zip and Expand-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.

PayPal.me

More Repositories

1

TinyLittleMvvm

A small MVVM library for WPF built on top of MahApps.Metro, supporting .NET Framework >= 4.7.2 and .NET Core >= 3
C#
132
star
2

AerialForWindows

Aerial For Windows is a Windows screen saver based on the new Apple TV screen saver
C#
34
star
3

Solutionizer

Creating ad-hoc solutions for Visual Studio.
C#
25
star
4

StickyWindows

Make your top-level windows stick when moved or resized.
C#
24
star
5

TaskbarItemOverlay

A WPF sample application demonstrating an attached property to set an toolbarbutton overlay
C#
12
star
6

NDepCheck

NDepCheck is a tool that helps you to keep the (static) architecture of a .NET software clean. You specify allowed dependencies between namespaces, classes, or even methods, and NDepCheck will check whether the dependencies are violated somewhere.
C#
12
star
7

WebBrowserHelper

A sample application demonstrating an attached property for WPF's WebBrowser control
C#
11
star
8

CrossThreadingTests

Async/await in Desktop Applications
C#
6
star
9

GitHubIgnoreWhitespacesForChrome

Chrome extension to force diff views on GitHub to ignore whitespaces
JavaScript
2
star
10

Extensions.DependencyInjection

Extensions for Microsoft.Extensions.DependencyInjection
C#
2
star
11

NestedContainersAndSignalR

Sample application to demonstrate using SignalR in nested Autofac containers.
C#
2
star
12

SkypeForBusinessSample

This repository demonstrates why the Lync Client SDK is NOT suitable for writing bots for Lync/Skype for Business.
C#
1
star
13

CreateAssemblyInfoFromGit

Creates a AssemblyInfo file with version generated from git
C#
1
star
14

Pretzel.MarkdownIt

An alternative markdown engine for Pretzel
JavaScript
1
star
15

DurableFunctionsMeetupRosenheim

1
star
16

WebConsoleDemo

The purpose of this project is to demonstrate how a web application could run remote processes on remote machines using SignalR Core.
C#
1
star