Skip to content

santisq/PSCompression

Repository files navigation

PSCompression

Zip, tar, and string compression utilities for PowerShell!

build codecov PowerShell Gallery LICENSE

PSCompression is a PowerShell module that provides utilities for creating, managing, and extracting zip and tar archives, as well as compressing and decompressing strings. It overcomes limitations in built-in PowerShell archive cmdlets (e.g., 2 GB zip file limits) and supports multiple compression algorithms, including gzip, bzip2, Zstandard, lzip, Brotli, Deflate, and Zlib. Built for cross-platform use, it’s compatible with Windows, Linux, and macOS.

Features

  • Zip Archive Management: Create, list, extract, retrieve content, modify, and remove entries in zip archives with pipeline support.
  • Tar Archive Management: Compress and extract tar archives with support for gz, bz2, zst, lz, and uncompressed (none) formats.
  • Tar Entry Management: List, extract, and retrieve content from individual tar entries.
  • String Compression: Compress and decompress strings using Brotli, Deflate, Gzip, and Zlib algorithms.

Cmdlets

Cmdlets

Zip Archive Cmdlets

Cmdlet Alias Description
Compress-ZipArchive zipcompress Compresses files and folders into a zip archive, overcoming built-in PowerShell limitations.
Expand-ZipEntry unzipentry Extracts individual zip entries to a destination directory.
Get-ZipEntry zipge Lists zip archive entries from paths or streams, serving as the entry point for zip cmdlets.
Get-ZipEntryContent zipgec Retrieves the content of zip entries as text or bytes.
New-ZipEntry zipne Adds new entries to a zip archive from files or paths.
Remove-ZipEntry ziprm Removes entries from one or more zip archives.
Rename-ZipEntry zipren Renames entries in one or more zip archives.
Set-ZipEntryContent zipsc Sets or appends content to a zip entry.

Note

Due to a .NET limitation, cmdlets like New-ZipEntry, Compress-ZipArchive with -Update, and Set-ZipEntryContent may fail when handling files or content > 2 GB in existing zip archives. As a workaround, recreate the zip archive or use tools like 7-Zip, which support larger files. See issue #19 for details.

Tar Archive Cmdlets

Cmdlet Alias Description
Compress-TarArchive tarcompress Compresses files and folders into a tar archive with optional compression (gz, bz2, zst, lz, none).
Expand-TarArchive untar Extracts a tar archive with support for gz, bz2, zst, lz, and uncompressed formats.
Expand-TarEntry untarentry Extracts individual tar entries to a destination directory.
Get-TarEntry targe Lists tar archive entries from paths or streams, serving as the entry point for tar cmdlets.
Get-TarEntryContent targec Retrieves the content of tar entries as text or bytes.

String Compression Cmdlets

Cmdlet Alias Description
ConvertFrom-BrotliString frombrotlistring Decompresses a Brotli-compressed string.
ConvertFrom-DeflateString fromdeflatestring Decompresses a Deflate-compressed string.
ConvertFrom-GzipString fromgzipstring Decompresses a Gzip-compressed string.
ConvertFrom-ZlibString fromzlibstring Decompresses a Zlib-compressed string.
ConvertTo-BrotliString tobrotlistring Compresses a string using Brotli.
ConvertTo-DeflateString todeflatestring Compresses a string using Deflate.
ConvertTo-GzipString togzipstring Compresses a string using Gzip.
ConvertTo-ZlibString tozlibstring Compresses a string using Zlib.

Note

The Compress-GzipArchive and Expand-GzipArchive cmdlets have been removed, as their single-file gzip functionality is now handled by Compress-TarArchive and Expand-TarArchive. For a workaround to compress or decompress single files using gzip, see Example 2 in ConvertTo-GzipString.

Documentation

Check out the docs for information about how to use this Module.

Installation

Gallery

The module is available through the PowerShell Gallery:

Install-Module PSCompression -Scope CurrentUser

Source

git clone 'https://github.com/santisq/PSCompression.git'
Set-Location ./PSCompression
./build.ps1

Requirements

This module has no external requirements and is compatible with Windows PowerShell 5.1 and PowerShell 7+.

Acknowledgments

This module is powered by the following open-source projects:

If you find these projects helpful, consider starring their repositories!

Contributing

Contributions are more than welcome, if you wish to contribute, fork this repository and submit a pull request with the changes.

Packages

No packages published

Contributors 2

  •  
  •