en-US/PSCompression.dll-Help.xml

<?xml version="1.0" encoding="utf-8"?>
<helpItems schema="maml" xmlns="http://msh">
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Compress-TarArchive</command:name>
      <command:verb>Compress</command:verb>
      <command:noun>TarArchive</command:noun>
      <maml:description>
        <maml:para>The `Compress-TarArchive` cmdlet creates a compressed tar archive file from one or more specified files or directories. It supports multiple compression algorithms and provides flexible file inclusion and exclusion options, similar to the `Compress-ZipArchive` cmdlet.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Compress-TarArchive` cmdlet creates a tar archive, optionally compressed with algorithms like gzip, bzip2, zstd, or lz4, in a PowerShell-native environment. It simplifies file and directory archiving by integrating seamlessly with PowerShell’s object-oriented pipeline, allowing flexible file selection through cmdlets like `Get-ChildItem` or `Get-Item`. With support for selective inclusion via `-Exclude`, customizable compression levels, and the ability to overwrite existing archives, it provides a convenient alternative to traditional tar utilities for PowerShell users, while preserving directory structures and metadata.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Compress-TarArchive</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="DestinationPath">
          <maml:name>Destination</maml:name>
          <maml:description>
            <maml:para>Specifies the path to the tar archive output file. The destination must include the file name and either an absolute or relative path.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; If the file name lacks an extension, the `-Algorithm` parameter determines the extension is appended (e.g., `.tar.gz` for `gz`, `.tar` for `none`).</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Algorithm</maml:name>
          <maml:description>
            <maml:para>Specifies the compression algorithm to use when creating the tar archive. Supported algorithms include `gz`, `bz2`, `zst`, `lz`, and `none` (no compression).</maml:para>
            <maml:para>&gt; [!NOTE] &gt; If not specified, the archive is created using the gzip algorithm (`gz`).</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">gz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">bz2</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">zst</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">lz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">none</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">Algorithm</command:parameterValue>
          <dev:type>
            <maml:name>Algorithm</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>none</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CompressionLevel</maml:name>
          <maml:description>
            <maml:para>Specifies the compression level for the selected algorithm, balancing speed and file size. See `CompressionLevel` Enum (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.compressionlevel)for details. The default is algorithm-dependent but typically `Optimal`.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Optimal</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Fastest</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">NoCompression</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">SmallestSize</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">CompressionLevel</command:parameterValue>
          <dev:type>
            <maml:name>CompressionLevel</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Optimal</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Exclude</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to exclude files or directories from the archive. Matching items are excluded based on their `.FullName` property. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Patterns are tested against the object's `.FullName` property.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Overwrites the destination tar archive if it exists, creating a new one. All existing entries are lost.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="PSPath">
          <maml:name>LiteralPath</maml:name>
          <maml:description>
            <maml:para>Specifies the exact path or paths to the files or directories to include in the archive file. Unlike the `-Path` parameter, the value of `-LiteralPath` is used exactly as typed, with no wildcard character interpretation.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Outputs a `FileInfo` object representing the created tar archive. By default, the cmdlet produces no output.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Compress-TarArchive</maml:name>
        <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path or paths to the files or directories to include in the archive file. To specify multiple paths and include files from multiple locations, use commas to separate the paths. This parameter accepts wildcard characters, allowing you to include all files in a directory or match specific patterns.</maml:para>
            <maml:para>&gt; [!TIP] &gt; Using wildcards with a root directory affects the archive's contents: &gt; &gt; - To create an archive that includes the root directory and all its files and subdirectories, specify the root directory without wildcards. For example: `-Path C:\Reference` &gt; - To create an archive that excludes the root directory but includes all its files and subdirectories, use the asterisk (` `) wildcard. For example: `-Path C:\Reference\ ` &gt; - To create an archive that only includes files in the root directory (excluding subdirectories), use the star-dot-star (` . `) wildcard. For example: `-Path C:\Reference\ . `</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="DestinationPath">
          <maml:name>Destination</maml:name>
          <maml:description>
            <maml:para>Specifies the path to the tar archive output file. The destination must include the file name and either an absolute or relative path.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; If the file name lacks an extension, the `-Algorithm` parameter determines the extension is appended (e.g., `.tar.gz` for `gz`, `.tar` for `none`).</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Algorithm</maml:name>
          <maml:description>
            <maml:para>Specifies the compression algorithm to use when creating the tar archive. Supported algorithms include `gz`, `bz2`, `zst`, `lz`, and `none` (no compression).</maml:para>
            <maml:para>&gt; [!NOTE] &gt; If not specified, the archive is created using the gzip algorithm (`gz`).</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">gz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">bz2</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">zst</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">lz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">none</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">Algorithm</command:parameterValue>
          <dev:type>
            <maml:name>Algorithm</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>none</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CompressionLevel</maml:name>
          <maml:description>
            <maml:para>Specifies the compression level for the selected algorithm, balancing speed and file size. See `CompressionLevel` Enum (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.compressionlevel)for details. The default is algorithm-dependent but typically `Optimal`.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Optimal</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Fastest</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">NoCompression</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">SmallestSize</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">CompressionLevel</command:parameterValue>
          <dev:type>
            <maml:name>CompressionLevel</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Optimal</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Exclude</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to exclude files or directories from the archive. Matching items are excluded based on their `.FullName` property. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Patterns are tested against the object's `.FullName` property.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Overwrites the destination tar archive if it exists, creating a new one. All existing entries are lost.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Outputs a `FileInfo` object representing the created tar archive. By default, the cmdlet produces no output.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Algorithm</maml:name>
        <maml:description>
          <maml:para>Specifies the compression algorithm to use when creating the tar archive. Supported algorithms include `gz`, `bz2`, `zst`, `lz`, and `none` (no compression).</maml:para>
          <maml:para>&gt; [!NOTE] &gt; If not specified, the archive is created using the gzip algorithm (`gz`).</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Algorithm</command:parameterValue>
        <dev:type>
          <maml:name>Algorithm</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>none</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>CompressionLevel</maml:name>
        <maml:description>
          <maml:para>Specifies the compression level for the selected algorithm, balancing speed and file size. See `CompressionLevel` Enum (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.compressionlevel)for details. The default is algorithm-dependent but typically `Optimal`.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">CompressionLevel</command:parameterValue>
        <dev:type>
          <maml:name>CompressionLevel</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Optimal</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="DestinationPath">
        <maml:name>Destination</maml:name>
        <maml:description>
          <maml:para>Specifies the path to the tar archive output file. The destination must include the file name and either an absolute or relative path.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; If the file name lacks an extension, the `-Algorithm` parameter determines the extension is appended (e.g., `.tar.gz` for `gz`, `.tar` for `none`).</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
        <maml:name>Exclude</maml:name>
        <maml:description>
          <maml:para>Specifies an array of string patterns to exclude files or directories from the archive. Matching items are excluded based on their `.FullName` property. Wildcard characters are supported.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; Patterns are tested against the object's `.FullName` property.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Overwrites the destination tar archive if it exists, creating a new one. All existing entries are lost.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="PSPath">
        <maml:name>LiteralPath</maml:name>
        <maml:description>
          <maml:para>Specifies the exact path or paths to the files or directories to include in the archive file. Unlike the `-Path` parameter, the value of `-LiteralPath` is used exactly as typed, with no wildcard character interpretation.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Outputs a `FileInfo` object representing the created tar archive. By default, the cmdlet produces no output.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the path or paths to the files or directories to include in the archive file. To specify multiple paths and include files from multiple locations, use commas to separate the paths. This parameter accepts wildcard characters, allowing you to include all files in a directory or match specific patterns.</maml:para>
          <maml:para>&gt; [!TIP] &gt; Using wildcards with a root directory affects the archive's contents: &gt; &gt; - To create an archive that includes the root directory and all its files and subdirectories, specify the root directory without wildcards. For example: `-Path C:\Reference` &gt; - To create an archive that excludes the root directory but includes all its files and subdirectories, use the asterisk (` `) wildcard. For example: `-Path C:\Reference\ ` &gt; - To create an archive that only includes files in the root directory (excluding subdirectories), use the star-dot-star (` . `) wildcard. For example: `-Path C:\Reference\ . `</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe strings containing paths to files or directories. Output from `Get-ChildItem` or `Get-Item` can be piped to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet produces no output.</maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>System.IO.FileInfo</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>When the `-PassThru` switch is used, this cmdlet outputs a `FileInfo` object representing the created tar archive.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>This cmdlet is designed to provide a PowerShell-native way to create tar archives with flexible compression options. It integrates seamlessly with other PowerShell cmdlets for file manipulation and filtering.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>----- Example 1: Compress all `.log` files in a directory -----</maml:title>
        <dev:code>Get-ChildItem C:\Logs -Recurse -Filter *.log |
    Compress-TarArchive -Destination C:\Archives\logs.tar.gz</dev:code>
        <dev:remarks>
          <maml:para>This example demonstrates how to compress all `.log` files in the `C:\Logs` directory into a gzip-compressed tar archive named `logs.tar.gz` in the `C:\Archives` directory.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; If not specified, the cmdlet will use the gzip algorithm as default.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 2: Compress a folder using `Fastest` Compression Level</maml:title>
        <dev:code>Compress-TarArchive -Path .\path -Destination myPath.tar.gz -CompressionLevel Fastest</dev:code>
        <dev:remarks>
          <maml:para>This example shows how to compress the entire path directory into a gzip-compressed tar archive named `myPath.tar.gz` using the `Fastest` compression level for quicker processing.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--------- Example 3: Replacing an existing Tar Archive ---------</maml:title>
        <dev:code>Compress-TarArchive -Path .\path -Destination dest.tar.gz -Force</dev:code>
        <dev:remarks>
          <maml:para>This example illustrates how to create a new tar archive named `dest.tar.gz` from the path directory, overwriting any existing archive with the same name using the `-Force` parameter.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>------- Example 4: Exclude files and folders from source -------</maml:title>
        <dev:code>Compress-TarArchive -Path .\path -Destination myPath.tar.gz -Exclude *.xyz, *\test\*</dev:code>
        <dev:remarks>
          <maml:para>This example shows how to compress all items in `path` excluding all files having a `.xyz` extension and excluding a folder with name `test` and all its child items.</maml:para>
          <maml:para>&gt; [!TIP] &gt; &gt; The `-Exclude` parameter supports wildcard patterns (https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_wildcards?view=powershell-7.4&amp;viewFallbackFrom=powershell-7.3), exclusion patterns are tested against the items `.FullName` property.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>---- Example 5: Compress a directory using bzip2 algorithm ----</maml:title>
        <dev:code>Compress-TarArchive -Path .\data -Destination C:\Backups\data.tar.bz2 -Algorithm bz2</dev:code>
        <dev:remarks>
          <maml:para>This example demonstrates how to compress the `data` directory into a bzip2-compressed tar archive named `data.tar.bz2` in the `C:\Backups` directory using the `bz2` algorithm.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>__Compress-ZipArchive__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__SharpZipLib__</maml:linkText>
        <maml:uri>https://github.com/icsharpcode/SharpZipLib</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__SharpCompress__</maml:linkText>
        <maml:uri>https://github.com/adamhathcock/sharpcompress</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__ZstdSharp__</maml:linkText>
        <maml:uri>https://github.com/oleg-st/ZstdSharp</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__System.IO.Compression__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertFrom-BrotliString</command:name>
      <command:verb>ConvertFrom</command:verb>
      <command:noun>BrotliString</command:noun>
      <maml:description>
        <maml:para>Expands Brotli Base64 compressed input strings.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `ConvertFrom-BrotliString` cmdlet expands Base64 encoded Brotli compressed strings using the `BrotliStream` class from the `BrotliSharpLib` library. This cmdlet is the counterpart of `ConvertTo-BrotliString` (./ConvertTo-BrotliString.md).</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertFrom-BrotliString</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>Specifies the input string or strings to expand.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Encoding</maml:name>
          <maml:description>
            <maml:para>Determines the character encoding used when expanding the input strings.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; The default encoding is `utf8NoBOM`.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
          <dev:type>
            <maml:name>Encoding</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Utf8</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Raw</maml:name>
          <maml:description>
            <maml:para>Outputs the expanded string as a single string with newlines preserved. By default, newline characters in the expanded string are used as delimiters to separate the input into an array of strings.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Encoding</maml:name>
        <maml:description>
          <maml:para>Determines the character encoding used when expanding the input strings.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; The default encoding is `utf8NoBOM`.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
        <dev:type>
          <maml:name>Encoding</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Utf8</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>Specifies the input string or strings to expand.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Raw</maml:name>
        <maml:description>
          <maml:para>Outputs the expanded string as a single string with newlines preserved. By default, newline characters in the expanded string are used as delimiters to separate the input into an array of strings.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe Brotli Base64 strings to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet streams strings. When the `-Raw` switch is used, it returns a single multi-line string.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------- Example 1: Expanding a Brotli compressed string -------</maml:title>
        <dev:code>PS ..\pwsh&gt; ConvertFrom-BrotliString CwiAaGVsbG8NCndvcmxkDQohDQoD
 
hello
world
!</dev:code>
        <dev:remarks>
          <maml:para>This example expands a Brotli Base64 encoded string back to its original strings.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>----------- Example 2: Demonstrates how `-Raw` works -----------</maml:title>
        <dev:code>PS ..\pwsh&gt; $strings = 'hello', 'world', '!'
 
# New lines are preserved when the cmdlet receives an array of strings.
PS ..\pwsh&gt; $strings | ConvertTo-BrotliString | ConvertFrom-BrotliString
 
hello
world
!
 
# When using the `-Raw` switch, all strings are returned as a single string
PS ..\pwsh&gt; $strings | ConvertTo-BrotliString -NoNewLine | ConvertFrom-BrotliString -Raw
 
helloworld!</dev:code>
        <dev:remarks>
          <maml:para>This example shows how the `-Raw` switch concatenates the expanded strings into a single string with newlines preserved.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version:</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__ConvertTo-BrotliString__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression/</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__BrotliSharpLib__</maml:linkText>
        <maml:uri>https://github.com/master131/BrotliSharpLib</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__System.IO.Compression__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertFrom-DeflateString</command:name>
      <command:verb>ConvertFrom</command:verb>
      <command:noun>DeflateString</command:noun>
      <maml:description>
        <maml:para>Expands Deflate Base64 compressed input strings.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `ConvertFrom-DeflateString` cmdlet expands Base64 encoded Deflate compressed strings using the `DeflateStream` Class (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.deflatestream). This cmdlet is the counterpart of [`ConvertTo-DeflateString`](./ConvertTo-DeflateString.md).</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertFrom-DeflateString</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>Specifies the input string or strings to expand.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Encoding</maml:name>
          <maml:description>
            <maml:para>Determines the character encoding used when expanding the input strings.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; The default encoding is `utf8NoBOM`.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
          <dev:type>
            <maml:name>Encoding</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Utf8</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Raw</maml:name>
          <maml:description>
            <maml:para>Outputs the expanded string as a single string with newlines preserved. By default, newline characters in the expanded string are used as delimiters to separate the input into an array of strings.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Encoding</maml:name>
        <maml:description>
          <maml:para>Determines the character encoding used when expanding the input strings.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; The default encoding is `utf8NoBOM`.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
        <dev:type>
          <maml:name>Encoding</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Utf8</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>Specifies the input string or strings to expand.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Raw</maml:name>
        <maml:description>
          <maml:para>Outputs the expanded string as a single string with newlines preserved. By default, newline characters in the expanded string are used as delimiters to separate the input into an array of strings.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe Deflate Base64 strings to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet streams strings. When the `-Raw` switch is used, it returns a single multi-line string.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------- Example 1: Expanding a Deflate compressed string -------</maml:title>
        <dev:code>PS ..\pwsh&gt; ConvertFrom-DeflateString ykjNycnn5SrPL8pJ4eVS5OUCAAAA//8DAA==
 
hello
world
!</dev:code>
        <dev:remarks>
          <maml:para>This example expands a Deflate Base64 encoded string back to its original strings.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>----------- Example 2: Demonstrates how `-Raw` works -----------</maml:title>
        <dev:code>PS ..\pwsh&gt; $strings = 'hello', 'world', '!'
 
# New lines are preserved when the cmdlet receives an array of strings.
PS ..\pwsh&gt; $strings | ConvertTo-DeflateString | ConvertFrom-DeflateString
 
hello
world
!
 
# When using the `-Raw` switch, all strings are returned as a single string
PS ..\pwsh&gt; $strings | ConvertTo-DeflateString -NoNewLine | ConvertFrom-DeflateString -Raw
 
helloworld!</dev:code>
        <dev:remarks>
          <maml:para>This example shows how the `-Raw` switch concatenates the expanded strings into a single string with newlines preserved.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>__ConvertTo-DeflateString__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__System.IO.Compression__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression?view=net-6.0</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__DeflateStream Class__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.deflatestream</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertFrom-ZLibString</command:name>
      <command:verb>ConvertFrom</command:verb>
      <command:noun>ZLibString</command:noun>
      <maml:description>
        <maml:para>Expands ZLib Base64 compressed input strings.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `ConvertFrom-ZLibString` cmdlet expands Base64 encoded ZLib compressed strings using a custom Zlib implementation built on the `DeflateStream` Class (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.deflatestream). For the implementation details, see the PSCompression source code. This cmdlet is the counterpart of [`ConvertTo-ZLibString`](./ConvertTo-ZLibString.md).</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertFrom-ZLibString</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>Specifies the input string or strings to expand.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Encoding</maml:name>
          <maml:description>
            <maml:para>Determines the character encoding used when expanding the input strings.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; The default encoding is `utf8NoBOM`.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
          <dev:type>
            <maml:name>Encoding</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Utf8</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Raw</maml:name>
          <maml:description>
            <maml:para>Outputs the expanded string as a single string with newlines preserved. By default, newline characters in the expanded string are used as delimiters to separate the input into an array of strings.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Encoding</maml:name>
        <maml:description>
          <maml:para>Determines the character encoding used when expanding the input strings.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; The default encoding is `utf8NoBOM`.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
        <dev:type>
          <maml:name>Encoding</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Utf8</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>Specifies the input string or strings to expand.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Raw</maml:name>
        <maml:description>
          <maml:para>Outputs the expanded string as a single string with newlines preserved. By default, newline characters in the expanded string are used as delimiters to separate the input into an array of strings.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe ZLib Base64 strings to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet streams strings. When the `-Raw` switch is used, it returns a single multi-line string.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------- Example 1: Expanding a ZLib compressed string --------</maml:title>
        <dev:code>PS ..\pwsh&gt; ConvertFrom-ZLibString eJzKSM3JyeflKs8vyknh5VLk5QIAAAD//wMAMosEow==
 
hello
world
!</dev:code>
        <dev:remarks>
          <maml:para>This example expands a ZLib Base64 encoded string back to its original strings.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>----------- Example 2: Demonstrates how `-Raw` works -----------</maml:title>
        <dev:code>PS ..\pwsh&gt; $strings = 'hello', 'world', '!'
 
# New lines are preserved when the cmdlet receives an array of strings.
PS ..\pwsh&gt; $strings | ConvertTo-ZLibString | ConvertFrom-ZLibString
 
hello
world
!
 
# When using the `-Raw` switch, all strings are returned as a single string
PS ..\pwsh&gt; $strings | ConvertTo-ZLibString -NoNewLine | ConvertFrom-ZLibString -Raw
 
helloworld!</dev:code>
        <dev:remarks>
          <maml:para>This example shows how the `-Raw` switch concatenates the expanded strings into a single string with newlines preserved.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>__ConvertTo-ZLibString__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__System.IO.Compression__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__DeflateStream Class__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.deflatestream</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__ZlibStream Class__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression/blob/main/src/PSCompression/ZlibStream.cs</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertTo-BrotliString</command:name>
      <command:verb>ConvertTo</command:verb>
      <command:noun>BrotliString</command:noun>
      <maml:description>
        <maml:para>Creates a Brotli Base64 compressed string from a specified input string or strings.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `ConvertTo-BrotliString` cmdlet compresses input strings into Brotli Base64 encoded strings or raw bytes using the `BrotliStream` class from the `BrotliSharpLib` library. For expansion of Base64 Brotli strings, see `ConvertFrom-BrotliString` (./ConvertFrom-BrotliString.md).</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertTo-BrotliString</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>Specifies the input string or strings to compress.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="Raw">
          <maml:name>AsByteStream</maml:name>
          <maml:description>
            <maml:para>Outputs the compressed byte array to the Success Stream.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; This parameter is intended for use with cmdlets that accept byte arrays, such as `Out-File` and `Set-Content` with `-Encoding Byte` (Windows PowerShell 5.1) or `-AsByteStream` (PowerShell 7+).</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CompressionLevel</maml:name>
          <maml:description>
            <maml:para>Specifies the compression level for the Brotli algorithm, balancing speed and compression size. See `CompressionLevel` Enum (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.compressionlevel)for details.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Optimal</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Fastest</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">NoCompression</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">SmallestSize</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">CompressionLevel</command:parameterValue>
          <dev:type>
            <maml:name>CompressionLevel</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Optimal</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Encoding</maml:name>
          <maml:description>
            <maml:para>Determines the character encoding used when compressing the input strings.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; The default encoding is `utf8NoBOM`.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
          <dev:type>
            <maml:name>Encoding</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Utf8</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>NoNewLine</maml:name>
          <maml:description>
            <maml:para>The encoded string representation of the input objects is concatenated to form the output. No newline character is added after each input string when this switch is used.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="Raw">
        <maml:name>AsByteStream</maml:name>
        <maml:description>
          <maml:para>Outputs the compressed byte array to the Success Stream.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; This parameter is intended for use with cmdlets that accept byte arrays, such as `Out-File` and `Set-Content` with `-Encoding Byte` (Windows PowerShell 5.1) or `-AsByteStream` (PowerShell 7+).</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>CompressionLevel</maml:name>
        <maml:description>
          <maml:para>Specifies the compression level for the Brotli algorithm, balancing speed and compression size. See `CompressionLevel` Enum (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.compressionlevel)for details.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">CompressionLevel</command:parameterValue>
        <dev:type>
          <maml:name>CompressionLevel</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Optimal</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Encoding</maml:name>
        <maml:description>
          <maml:para>Determines the character encoding used when compressing the input strings.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; The default encoding is `utf8NoBOM`.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
        <dev:type>
          <maml:name>Encoding</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Utf8</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>Specifies the input string or strings to compress.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>NoNewLine</maml:name>
        <maml:description>
          <maml:para>The encoded string representation of the input objects is concatenated to form the output. No newline character is added after each input string when this switch is used.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe strings to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet outputs a single Base64 encoded string.</maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Byte[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>When the `-AsByteStream` switch is used, this cmdlet outputs a byte array down the pipeline.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>Example 1: Compress strings to Brotli compressed Base64 encoded string</maml:title>
        <dev:code>PS ..\pwsh&gt; $strings = 'hello', 'world', '!'
PS ..\pwsh&gt; ConvertTo-BrotliString $strings
 
CwiAaGVsbG8NCndvcmxkDQohDQoD
 
# Or using pipeline input
PS ..\pwsh&gt; $strings | ConvertTo-BrotliString
 
CwiAaGVsbG8NCndvcmxkDQohDQoD</dev:code>
        <dev:remarks>
          <maml:para>This example demonstrates compressing an array of strings into a single Brotli Base64 encoded string using either positional binding or pipeline input.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--- Example 2: Create a Brotli compressed file from a string ---</maml:title>
        <dev:code>PS ..\pwsh&gt; 'hello world!' | ConvertTo-BrotliString -AsByteStream | Set-Content -FilePath .\helloworld.br -AsByteStream
 
# To read the file back you can use `ConvertFrom-BrotliString` following these steps:
PS ..\pwsh&gt; $path = Convert-Path .\helloworld.br
PS ..\pwsh&gt; [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes($path)) | ConvertFrom-BrotliString
 
hello world!</dev:code>
        <dev:remarks>
          <maml:para>Demonstrates how `-AsByteStream` outputs a byte array that can be saved to a file using `Set-Content` or `Out-File`. Note that the byte array is not enumerated.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; The example uses `-AsByteStream` with `Set-Content`, which is available in PowerShell 7+. In Windows PowerShell 5.1, use `-Encoding Byte` with `Set-Content` or `Out-File` to write the byte array to a file.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>---- Example 3: Compress strings using a specific Encoding ----</maml:title>
        <dev:code>PS ..\pwsh&gt; 'ñ' | ConvertTo-BrotliString -Encoding ansi | ConvertFrom-BrotliString
�
 
PS ..\pwsh&gt; 'ñ' | ConvertTo-BrotliString -Encoding utf8BOM | ConvertFrom-BrotliString
ñ</dev:code>
        <dev:remarks>
          <maml:para>This example shows how different encodings affect the compression and decompression of special characters. The default encoding is `utf8NoBOM`.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 4: Compressing multiple files into one Brotli Base64 string</maml:title>
        <dev:code># Check the total length of the files
PS ..\pwsh&gt; (Get-Content myLogs\*.txt | Measure-Object Length -Sum).Sum / 1kb
87.216796875
 
# Check the total length after compression
PS ..\pwsh&gt; (Get-Content myLogs\*.txt | ConvertTo-BrotliString).Length / 1kb
35.123456789</dev:code>
        <dev:remarks>
          <maml:para>This example demonstrates compressing the contents of multiple text files into a single Brotli Base64 string and compares the total length before and after compression.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>__ConvertFrom-BrotliString__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__BrotliSharpLib__</maml:linkText>
        <maml:uri>https://github.com/master131/BrotliSharpLib</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__System.IO.Compression__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression?view=net-6.0</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertTo-DeflateString</command:name>
      <command:verb>ConvertTo</command:verb>
      <command:noun>DeflateString</command:noun>
      <maml:description>
        <maml:para>Creates a Deflate Base64 compressed string from a specified input string or strings.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `ConvertTo-DeflateString` cmdlet compresses input strings into Deflate Base64 encoded strings or raw bytes using the `DeflateStream` Class (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.deflatestream). For expansion of Base64 Deflate strings, see [`ConvertFrom-DeflateString`](./ConvertFrom-DeflateString.md).</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertTo-DeflateString</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>Specifies the input string or strings to compress.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="Raw">
          <maml:name>AsByteStream</maml:name>
          <maml:description>
            <maml:para>Outputs the compressed byte array to the Success Stream.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; This parameter is intended for use with cmdlets that accept byte arrays, such as `Out-File` and `Set-Content` with `-Encoding Byte` (Windows PowerShell 5.1) or `-AsByteStream` (PowerShell 7+).</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CompressionLevel</maml:name>
          <maml:description>
            <maml:para>Specifies the compression level for the Deflate algorithm, balancing speed and compression size. See `CompressionLevel` Enum (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.compressionlevel)for details.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Optimal</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Fastest</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">NoCompression</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">SmallestSize</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">CompressionLevel</command:parameterValue>
          <dev:type>
            <maml:name>CompressionLevel</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Optimal</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Encoding</maml:name>
          <maml:description>
            <maml:para>Determines the character encoding used when compressing the input strings.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; The default encoding is `utf8NoBOM`.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
          <dev:type>
            <maml:name>Encoding</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Utf8</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>NoNewLine</maml:name>
          <maml:description>
            <maml:para>The encoded string representation of the input objects is concatenated to form the output. No newline character is added after each input string when this switch is used.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="Raw">
        <maml:name>AsByteStream</maml:name>
        <maml:description>
          <maml:para>Outputs the compressed byte array to the Success Stream.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; This parameter is intended for use with cmdlets that accept byte arrays, such as `Out-File` and `Set-Content` with `-Encoding Byte` (Windows PowerShell 5.1) or `-AsByteStream` (PowerShell 7+).</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>CompressionLevel</maml:name>
        <maml:description>
          <maml:para>Specifies the compression level for the Deflate algorithm, balancing speed and compression size. See `CompressionLevel` Enum (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.compressionlevel)for details.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">CompressionLevel</command:parameterValue>
        <dev:type>
          <maml:name>CompressionLevel</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Optimal</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Encoding</maml:name>
        <maml:description>
          <maml:para>Determines the character encoding used when compressing the input strings.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; The default encoding is `utf8NoBOM`.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
        <dev:type>
          <maml:name>Encoding</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Utf8</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>Specifies the input string or strings to compress.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>NoNewLine</maml:name>
        <maml:description>
          <maml:para>The encoded string representation of the input objects is concatenated to form the output. No newline character is added after each input string when this switch is used.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe strings to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet outputs a single Base64 encoded string.</maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Byte[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>When the `-AsByteStream` switch is used, this cmdlet outputs a byte array down the pipeline.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>Example 1: Compress strings to Deflate compressed Base64 encoded string</maml:title>
        <dev:code>PS ..\pwsh&gt; $strings = 'hello', 'world', '!'
PS ..\pwsh&gt; ConvertTo-DeflateString $strings
 
ykjNycnn5SrPL8pJ4eVS5OUCAAAA//8DAA==
 
# Or using pipeline input
PS ..\pwsh&gt; $strings | ConvertTo-DeflateString
 
ykjNycnn5SrPL8pJ4eVS5OUCAAAA//8DAA==</dev:code>
        <dev:remarks>
          <maml:para>This example demonstrates compressing an array of strings into a single Deflate Base64 encoded string using either positional binding or pipeline input.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-- Example 2: Create a Deflate compressed file from a string --</maml:title>
        <dev:code>PS ..\pwsh&gt; 'hello world!' | ConvertTo-DeflateString -AsByteStream | Set-Content -FilePath .\helloworld.deflate -AsByteStream
 
# To read the file back you can use `ConvertFrom-BrotliString` following these steps:
PS ..\pwsh&gt; $path = Convert-Path .\helloworld.deflate
PS ..\pwsh&gt; [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes($path)) | ConvertFrom-DeflateString
 
hello world!</dev:code>
        <dev:remarks>
          <maml:para>Demonstrates how `-AsByteStream` outputs a byte array that can be saved to a file using `Set-Content` or `Out-File`. Note that the byte array is not enumerated.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; The example uses `-AsByteStream` with `Set-Content`, which is available in PowerShell 7+. In Windows PowerShell 5.1, use `-Encoding Byte` with `Set-Content` or `Out-File` to write the byte array to a file.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>---- Example 3: Compress strings using a specific Encoding ----</maml:title>
        <dev:code>PS ..\pwsh&gt; 'ñ' | ConvertTo-DeflateString -Encoding ansi | ConvertFrom-DeflateString
�
 
PS ..\pwsh&gt; 'ñ' | ConvertTo-DeflateString -Encoding utf8BOM | ConvertFrom-DeflateString
ñ</dev:code>
        <dev:remarks>
          <maml:para>This example shows how different encodings affect the compression and decompression of special characters. The default encoding is `utf8NoBOM`.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 4: Compressing multiple files into one Deflate Base64 string</maml:title>
        <dev:code># Check the total length of the files
PS ..\pwsh&gt; (Get-Content myLogs\*.txt | Measure-Object Length -Sum).Sum / 1kb
87.216796875
 
# Check the total length after compression
PS ..\pwsh&gt; (Get-Content myLogs\*.txt | ConvertTo-DeflateString).Length / 1kb
35.123456789</dev:code>
        <dev:remarks>
          <maml:para>This example demonstrates compressing the contents of multiple text files into a single Deflate Base64 string and compares the total length before and after compression.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>__ConvertFrom-DeflateString__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__System.IO.Compression__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression?view=net-6.0</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__DeflateStream Class__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.deflatestream</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertTo-ZLibString</command:name>
      <command:verb>ConvertTo</command:verb>
      <command:noun>ZLibString</command:noun>
      <maml:description>
        <maml:para>Creates a ZLib Base64 compressed string from a specified input string or strings.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `ConvertTo-ZLibString` cmdlet compresses input strings into ZLib Base64 encoded strings or raw bytes using a custom Zlib implementation built on the `DeflateStream` Class (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.deflatestream). For the implementation details, see the PSCompression source code. For expansion of Base64 ZLib strings, see [`ConvertFrom-ZLibString`](./ConvertFrom-ZLibString.md).</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertTo-ZLibString</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>Specifies the input string or strings to compress.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="Raw">
          <maml:name>AsByteStream</maml:name>
          <maml:description>
            <maml:para>Outputs the compressed byte array to the Success Stream.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; This parameter is intended for use with cmdlets that accept byte arrays, such as `Out-File` and `Set-Content` with `-Encoding Byte` (Windows PowerShell 5.1) or `-AsByteStream` (PowerShell 7+).</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CompressionLevel</maml:name>
          <maml:description>
            <maml:para>Specifies the compression level for the ZLib algorithm, balancing speed and compression size. See `CompressionLevel` Enum (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.compressionlevel)for details.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Optimal</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Fastest</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">NoCompression</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">SmallestSize</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">CompressionLevel</command:parameterValue>
          <dev:type>
            <maml:name>CompressionLevel</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Optimal</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Encoding</maml:name>
          <maml:description>
            <maml:para>Determines the character encoding used when compressing the input strings.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; The default encoding is `utf8NoBOM`.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
          <dev:type>
            <maml:name>Encoding</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Utf8</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>NoNewLine</maml:name>
          <maml:description>
            <maml:para>The encoded string representation of the input objects is concatenated to form the output. No newline character is added after each input string when this switch is used.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="Raw">
        <maml:name>AsByteStream</maml:name>
        <maml:description>
          <maml:para>Outputs the compressed byte array to the Success Stream.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; This parameter is intended for use with cmdlets that accept byte arrays, such as `Out-File` and `Set-Content` with `-Encoding Byte` (Windows PowerShell 5.1) or `-AsByteStream` (PowerShell 7+).</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>CompressionLevel</maml:name>
        <maml:description>
          <maml:para>Specifies the compression level for the ZLib algorithm, balancing speed and compression size. See `CompressionLevel` Enum (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.compressionlevel)for details.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">CompressionLevel</command:parameterValue>
        <dev:type>
          <maml:name>CompressionLevel</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Optimal</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Encoding</maml:name>
        <maml:description>
          <maml:para>Determines the character encoding used when compressing the input strings.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; The default encoding is `utf8NoBOM`.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
        <dev:type>
          <maml:name>Encoding</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Utf8</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>Specifies the input string or strings to compress.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>NoNewLine</maml:name>
        <maml:description>
          <maml:para>The encoded string representation of the input objects is concatenated to form the output. No newline character is added after each input string when this switch is used.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe strings to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet outputs a single Base64 encoded string.</maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Byte[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>When the `-AsByteStream` switch is used, this cmdlet outputs a byte array down the pipeline.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>Example 1: Compress strings to ZLib compressed Base64 encoded string</maml:title>
        <dev:code>PS ..\pwsh&gt; $strings = 'hello', 'world', '!'
PS ..\pwsh&gt; ConvertTo-ZLibString $strings
 
eJzKSM3JyeflKs8vyknh5VLk5QIAAAD//wMAMosEow==
 
# Or using pipeline input
PS ..\pwsh&gt; $strings | ConvertTo-ZLibString
 
eJzKSM3JyeflKs8vyknh5VLk5QIAAAD//wMAMosEow==</dev:code>
        <dev:remarks>
          <maml:para>This example demonstrates compressing an array of strings into a single ZLib Base64 encoded string using either positional binding or pipeline input.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>---- Example 2: Create a ZLib compressed file from a string ----</maml:title>
        <dev:code>PS ..\pwsh&gt; 'hello world!' | ConvertTo-ZLibString -AsByteStream | Set-Content -FilePath .\helloworld.zlib -AsByteStream
 
# To read the file back you can use `ConvertFrom-BrotliString` following these steps:
PS ..\pwsh&gt; $path = Convert-Path .\helloworld.zlib
PS ..\pwsh&gt; [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes($path)) | ConvertFrom-ZLibString
 
hello world!</dev:code>
        <dev:remarks>
          <maml:para>Demonstrates how `-AsByteStream` outputs a byte array that can be saved to a file using `Set-Content` or `Out-File`. Note that the byte array is not enumerated.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; The example uses `-AsByteStream` with `Set-Content`, which is available in PowerShell 7+. In Windows PowerShell 5.1, use `-Encoding Byte` with `Set-Content` or `Out-File` to write the byte array to a file.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>---- Example 3: Compress strings using a specific Encoding ----</maml:title>
        <dev:code>PS ..\pwsh&gt; 'ñ' | ConvertTo-ZLibString -Encoding ansi | ConvertFrom-ZLibString
�
 
PS ..\pwsh&gt; 'ñ' | ConvertTo-ZLibString -Encoding utf8BOM | ConvertFrom-ZLibString
ñ</dev:code>
        <dev:remarks>
          <maml:para>This example shows how different encodings affect the compression and decompression of special characters. The default encoding is `utf8NoBOM`.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 4: Compressing multiple files into one ZLib Base64 string</maml:title>
        <dev:code># Check the total length of the files
PS ..\pwsh&gt; (Get-Content myLogs\*.txt | Measure-Object Length -Sum).Sum / 1kb
87.216796875
 
# Check the total length after compression
PS ..\pwsh&gt; (Get-Content myLogs\*.txt | ConvertTo-GzipString).Length / 1kb
35.123456789</dev:code>
        <dev:remarks>
          <maml:para>This example demonstrates compressing the contents of multiple text files into a single ZLib Base64 string and compares the total length before and after compression.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>__ConvertFrom-ZLibString__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__System.IO.Compression__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression?view=net-6.0</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__DeflateStream Class__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.deflatestream</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__ZlibStream Class__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression/blob/main/src/PSCompression/ZlibStream.cs</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Expand-TarArchive</command:name>
      <command:verb>Expand</command:verb>
      <command:noun>TarArchive</command:noun>
      <maml:description>
        <maml:para>Extracts files from a tar archive, optionally compressed with gzip, bzip2, Zstandard, or lzip.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Expand-TarArchive` cmdlet extracts files and directories from a tar archive, with support for compressed tar formats using gzip (`.tar.gz`), bzip2 (`.tar.bz2`), Zstandard (`.tar.zst`), lzip (`.tar.lz`), or uncompressed tar (`.tar`). It uses libraries such as `SharpZipLib` for tar handling, `System.IO.Compression` for gzip, `SharpCompress` for lzip, and `ZstdSharp` for Zstandard. This cmdlet is the counterpart to `Compress-TarArchive` (./Compress-TarArchive.md). By default, files are extracted to the current directory unless a `-Destination` is specified. Use `-Force` to overwrite existing files and `-PassThru` to output the extracted file and directory objects.</maml:para>
      <maml:para>&gt; [!NOTE] &gt; When the `-Algorithm` parameter is not specified, the cmdlet infers the compression algorithm from the file extension (e.g., `.tar.gz` for gzip, `.tar.zst` for Zstandard, `.tar` for uncompressed). See the `-Algorithm` parameter for supported extensions.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Expand-TarArchive</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Destination</maml:name>
          <maml:description>
            <maml:para>Specifies the path to the directory where the archive contents are extracted. If not provided, the current directory is used. If the directory does not exist, it is created.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Algorithm</maml:name>
          <maml:description>
            <maml:para>Specifies the compression algorithm used for the tar archive. Accepted values and their corresponding file extensions are:</maml:para>
            <maml:para>- `gz`: Gzip compression (`.gz`, `.gzip`, `.tgz`).</maml:para>
            <maml:para>- `bz2`: Bzip2 compression (`.bz2`, `.bzip2`, `.tbz2`, `.tbz`)</maml:para>
            <maml:para>- `zst`: Zstandard compression (`.zst`).</maml:para>
            <maml:para>- `lz`: Lzip compression (`.lz`).</maml:para>
            <maml:para>- `none`: Uncompressed tar archive (`.tar`).</maml:para>
            <maml:para></maml:para>
            <maml:para>&gt; [!NOTE] &gt; If not specified, the cmdlet infers the algorithm from the file extension. If the extension is unrecognized, it defaults to `none` (uncompressed tar).</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">gz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">bz2</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">zst</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">lz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">none</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">Algorithm</command:parameterValue>
          <dev:type>
            <maml:name>Algorithm</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Overwrites existing files in the destination directory without prompting. If not specified, the cmdlet skips files that already exist.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="PSPath">
          <maml:name>LiteralPath</maml:name>
          <maml:description>
            <maml:para>Specifies the exact path(s) to the tar archive(s) to extract. Unlike `-Path`, `-LiteralPath` does not support wildcard characters and treats the path as a literal string. Use this parameter when the archive name contains special characters.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Outputs `System.IO.FileInfo` and `System.IO.DirectoryInfo` objects representing the extracted files and directories to the pipeline. By default, no output is produced unless an error occurs.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Expand-TarArchive</maml:name>
        <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies the path(s) to the tar archive(s) to extract. Supports wildcard characters, allowing multiple archives to be processed. Paths can be provided via pipeline input.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Destination</maml:name>
          <maml:description>
            <maml:para>Specifies the path to the directory where the archive contents are extracted. If not provided, the current directory is used. If the directory does not exist, it is created.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Algorithm</maml:name>
          <maml:description>
            <maml:para>Specifies the compression algorithm used for the tar archive. Accepted values and their corresponding file extensions are:</maml:para>
            <maml:para>- `gz`: Gzip compression (`.gz`, `.gzip`, `.tgz`).</maml:para>
            <maml:para>- `bz2`: Bzip2 compression (`.bz2`, `.bzip2`, `.tbz2`, `.tbz`)</maml:para>
            <maml:para>- `zst`: Zstandard compression (`.zst`).</maml:para>
            <maml:para>- `lz`: Lzip compression (`.lz`).</maml:para>
            <maml:para>- `none`: Uncompressed tar archive (`.tar`).</maml:para>
            <maml:para></maml:para>
            <maml:para>&gt; [!NOTE] &gt; If not specified, the cmdlet infers the algorithm from the file extension. If the extension is unrecognized, it defaults to `none` (uncompressed tar).</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">gz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">bz2</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">zst</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">lz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">none</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">Algorithm</command:parameterValue>
          <dev:type>
            <maml:name>Algorithm</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Overwrites existing files in the destination directory without prompting. If not specified, the cmdlet skips files that already exist.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Outputs `System.IO.FileInfo` and `System.IO.DirectoryInfo` objects representing the extracted files and directories to the pipeline. By default, no output is produced unless an error occurs.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Algorithm</maml:name>
        <maml:description>
          <maml:para>Specifies the compression algorithm used for the tar archive. Accepted values and their corresponding file extensions are:</maml:para>
          <maml:para>- `gz`: Gzip compression (`.gz`, `.gzip`, `.tgz`).</maml:para>
          <maml:para>- `bz2`: Bzip2 compression (`.bz2`, `.bzip2`, `.tbz2`, `.tbz`)</maml:para>
          <maml:para>- `zst`: Zstandard compression (`.zst`).</maml:para>
          <maml:para>- `lz`: Lzip compression (`.lz`).</maml:para>
          <maml:para>- `none`: Uncompressed tar archive (`.tar`).</maml:para>
          <maml:para></maml:para>
          <maml:para>&gt; [!NOTE] &gt; If not specified, the cmdlet infers the algorithm from the file extension. If the extension is unrecognized, it defaults to `none` (uncompressed tar).</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Algorithm</command:parameterValue>
        <dev:type>
          <maml:name>Algorithm</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Destination</maml:name>
        <maml:description>
          <maml:para>Specifies the path to the directory where the archive contents are extracted. If not provided, the current directory is used. If the directory does not exist, it is created.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Overwrites existing files in the destination directory without prompting. If not specified, the cmdlet skips files that already exist.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="PSPath">
        <maml:name>LiteralPath</maml:name>
        <maml:description>
          <maml:para>Specifies the exact path(s) to the tar archive(s) to extract. Unlike `-Path`, `-LiteralPath` does not support wildcard characters and treats the path as a literal string. Use this parameter when the archive name contains special characters.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Outputs `System.IO.FileInfo` and `System.IO.DirectoryInfo` objects representing the extracted files and directories to the pipeline. By default, no output is produced unless an error occurs.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies the path(s) to the tar archive(s) to extract. Supports wildcard characters, allowing multiple archives to be processed. Paths can be provided via pipeline input.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe paths to tar archives to this cmdlet via the `-Path` parameter or provide literal paths via the `-LiteralPath` parameter.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet returns no output.</maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>System.IO.FileSystemInfo</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>When the `-PassThru` parameter is used, the cmdlet outputs objects representing the extracted files and directories.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------- Example 1: Extract an uncompressed tar archive --------</maml:title>
        <dev:code>PS C:\&gt; Expand-TarArchive -Path .\archive.tar
 
PS C:\&gt; Get-ChildItem
    Directory: C:\
 
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2025-06-23 7:00 PM folder1
-a--- 2025-06-23 7:00 PM 1024 file1.txt
-a--- 2025-06-23 7:00 PM 2048 file2.txt</dev:code>
        <dev:remarks>
          <maml:para>Extracts the contents of `archive.tar` to the current directory, creating `folder1`, `file1.txt`, and `file2.txt`.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 2: Extract a gzip-compressed tar archive to a specific destination</maml:title>
        <dev:code>PS C:\&gt; Expand-TarArchive -Path .\archive.tar.gz -Destination .\extracted
 
PS C:\&gt; Get-ChildItem .\extracted
    Directory: C:\extracted
 
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2025-06-23 7:00 PM folder1
-a--- 2025-06-23 7:00 PM 1024 file1.txt
-a--- 2025-06-23 7:00 PM 2048 file2.txt</dev:code>
        <dev:remarks>
          <maml:para>Extracts `archive.tar.gz` to the `extracted` directory using the gzip algorithm, creating the directory if it doesn’t exist.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 3: Extract multiple Zstandard-compressed tar archives with PassThru</maml:title>
        <dev:code>PS C:\&gt; Get-ChildItem *.tar.zst | Expand-TarArchive -PassThru
 
    Directory: C:\
 
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2025-06-23 7:00 PM folder1
-a--- 2025-06-23 7:00 PM 1024 file1.txt
-a--- 2025-06-23 7:00 PM 2048 file2.txt
d---- 2025-06-23 7:00 PM folder2
-a--- 2025-06-23 7:00 PM 4096 file3.txt</dev:code>
        <dev:remarks>
          <maml:para>Extracts all `.tar.zst` files in the current directory and outputs the extracted files and directories to the pipeline.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------- Example 4: Overwrite existing files with Force --------</maml:title>
        <dev:code>PS C:\&gt; Expand-TarArchive -Path .\archive.tar -Destination .\extracted -Force
 
PS C:\&gt; Get-ChildItem .\extracted
    Directory: C:\extracted
 
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2025-06-23 7:00 PM 1024 file1.txt</dev:code>
        <dev:remarks>
          <maml:para>Extracts `archive.tar` to the `extracted` directory, overwriting any existing `file1.txt` due to the `-Force` parameter.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>__Compress-TarArchive__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__SharpZipLib__</maml:linkText>
        <maml:uri>https://github.com/icsharpcode/SharpZipLib</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__SharpCompress__</maml:linkText>
        <maml:uri>https://github.com/adamhathcock/sharpcompress</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__ZstdSharp__</maml:linkText>
        <maml:uri>https://github.com/oleg-st/ZstdSharp</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__System.IO.Compression__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression?view=net-6.0</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Expand-TarEntry</command:name>
      <command:verb>Expand</command:verb>
      <command:noun>TarEntry</command:noun>
      <maml:description>
        <maml:para>Expands tar archive entries to a destination directory.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Expand-TarEntry` cmdlet extracts tar entries output by the `Get-TarEntry` (./Get-TarEntry.md) cmdlet to a destination directory. Expanded entries maintain their original folder structure based on their relative path within the tar archive. This cmdlet supports both uncompressed (`.tar`) and compressed tar archives (e.g., `.tar.gz`, `.tar.bz2`)processed by `Get-TarEntry`.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Expand-TarEntry</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Destination</maml:name>
          <maml:description>
            <maml:para>The destination directory where tar entries are extracted. If not specified, entries are extracted to their relative path in the current directory, creating any necessary subdirectories.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>$PWD</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Overwrites existing files in the destination directory when this switch is used.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>The tar entries to extract. These are instances of `TarEntryBase` (`TarEntryFile` or `TarEntryDirectory`) output by the `Get-TarEntry` (./Get-TarEntry.md)cmdlet.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; This parameter accepts pipeline input from `Get-TarEntry`. Binding by name is also supported.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">TarEntryBase[]</command:parameterValue>
          <dev:type>
            <maml:name>TarEntryBase[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Outputs `FileInfo` and `DirectoryInfo` objects representing the extracted entries when this switch is used. By default, the cmdlet produces no output.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Destination</maml:name>
        <maml:description>
          <maml:para>The destination directory where tar entries are extracted. If not specified, entries are extracted to their relative path in the current directory, creating any necessary subdirectories.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>$PWD</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Overwrites existing files in the destination directory when this switch is used.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>The tar entries to extract. These are instances of `TarEntryBase` (`TarEntryFile` or `TarEntryDirectory`) output by the `Get-TarEntry` (./Get-TarEntry.md)cmdlet.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; This parameter accepts pipeline input from `Get-TarEntry`. Binding by name is also supported.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">TarEntryBase[]</command:parameterValue>
        <dev:type>
          <maml:name>TarEntryBase[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Outputs `FileInfo` and `DirectoryInfo` objects representing the extracted entries when this switch is used. By default, the cmdlet produces no output.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>PSCompression.Abstractions.TarEntryBase[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe instances of `TarEntryFile` or `TarEntryDirectory` from `Get-TarEntry` (./Get-TarEntry.md)to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet produces no output.</maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>System.IO.FileSystemInfo</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>When the `-PassThru` switch is used, the cmdlet outputs objects representing the extracted files and directories.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>Example 1: Extract all `.txt` files from a tar archive to the current directory</maml:title>
        <dev:code>PS C:\&gt; Get-TarEntry .\archive.tar -Include *.txt | Expand-TarEntry</dev:code>
        <dev:remarks>
          <maml:para>Extracts all `.txt` files from `archive.tar` to the current directory, preserving their relative paths.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 2: Extract all `.txt` files from a tar archive to a specific directory</maml:title>
        <dev:code>PS C:\&gt; Get-TarEntry .\archive.tar.gz -Include *.txt | Expand-TarEntry -Destination .\extracted</dev:code>
        <dev:remarks>
          <maml:para>Extracts all `.txt` files from `archive.tar.gz` to the `extracted` directory, creating the directory if it doesn’t exist.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 3: Extract all entries excluding `.txt` files from a tar archive</maml:title>
        <dev:code>PS C:\&gt; Get-TarEntry .\archive.tar -Exclude *.txt | Expand-TarEntry</dev:code>
        <dev:remarks>
          <maml:para>Extracts all entries except `.txt` files from `archive.tar` to the current directory.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>---- Example 4: Extract entries overwriting existing files ----</maml:title>
        <dev:code>PS C:\&gt; Get-TarEntry .\archive.tar -Include *.txt | Expand-TarEntry -Force</dev:code>
        <dev:remarks>
          <maml:para>Demonstrates how the `-Force` switch overwrites existing files in the destination directory.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--- Example 5: Extract entries and output the expanded items ---</maml:title>
        <dev:code>PS C:\&gt; Get-TarEntry .\archive.tar -Exclude *.txt | Expand-TarEntry -PassThru
 
    Directory: C:\
 
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2025-06-23 7:00 PM folder1
-a--- 2025-06-23 7:00 PM 2048 image.png</dev:code>
        <dev:remarks>
          <maml:para>By default, this cmdlet produces no output. When `-PassThru` is used, it outputs `FileInfo` and `DirectoryInfo` objects representing the extracted entries.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 6: Extract a specific entry from a compressed tar archive</maml:title>
        <dev:code>PS C:\&gt; $stream = Invoke-WebRequest https://example.com/archive.tar.gz
PS C:\&gt; $file = $stream | Get-TarEntry -Include readme.md -Algorithm gz | Expand-TarEntry -PassThru
PS C:\&gt; Get-Content $file.FullName
 
# My Project
This is the README file for my project.</dev:code>
        <dev:remarks>
          <maml:para>Extracts the `readme.md` file from a gzip-compressed tar archive retrieved via a web request and displays its contents.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; When `Get-TarEntry` processes a stream, it defaults to the `gz` (gzip) algorithm. Specify the `-Algorithm` parameter (e.g., `-Algorithm bz2` for bzip2) to match the compression type of the tar archive, or an error may occur if the stream is not gzip-compressed.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>__Get-TarEntry__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__Expand-TarArchive__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__SharpZipLib__</maml:linkText>
        <maml:uri>https://github.com/icsharpcode/SharpZipLib</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__SharpCompress__</maml:linkText>
        <maml:uri>https://github.com/adamhathcock/sharpcompress</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__ZstdSharp__</maml:linkText>
        <maml:uri>https://github.com/oleg-st/ZstdSharp</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__System.IO.Compression__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Expand-ZipEntry</command:name>
      <command:verb>Expand</command:verb>
      <command:noun>ZipEntry</command:noun>
      <maml:description>
        <maml:para>Expands Zip Archive Entries to a destination directory.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Expand-ZipEntry` cmdlet can expand zip entries outputted by the `Get-ZipEntry` (./Get-ZipEntry.md)command to a destination directory. Expanded entries maintain their original folder structure based on their relative path.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Expand-ZipEntry</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Destination</maml:name>
          <maml:description>
            <maml:para>The destination directory where to extract the Zip Entries.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; This parameter is optional, when not used, the entries are extracted to the their relative zip path in the current directory.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>$PWD</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>Existing files in the destination directory are overwritten when this switch is used.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>The cmdlet outputs the `FileInfo` and `DirectoryInfo` instances representing the extracted entries when this switch is used.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>The zip entries to expand.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter takes input from pipeline, however binding by name is also possible. &gt; - The input are instances inheriting from `ZipEntryBase` (`ZipEntryFile` or `ZipEntryDirectory`) outputted by `Get-ZipEntry` (Get-ZipEntry.md) and [`New-ZipEntry`](New-ZipEntry.md)cmdlets.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ZipEntryBase[]</command:parameterValue>
          <dev:type>
            <maml:name>ZipEntryBase[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Destination</maml:name>
        <maml:description>
          <maml:para>The destination directory where to extract the Zip Entries.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; This parameter is optional, when not used, the entries are extracted to the their relative zip path in the current directory.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>$PWD</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>Existing files in the destination directory are overwritten when this switch is used.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>The cmdlet outputs the `FileInfo` and `DirectoryInfo` instances representing the extracted entries when this switch is used.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>The zip entries to expand.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter takes input from pipeline, however binding by name is also possible. &gt; - The input are instances inheriting from `ZipEntryBase` (`ZipEntryFile` or `ZipEntryDirectory`) outputted by `Get-ZipEntry` (Get-ZipEntry.md) and [`New-ZipEntry`](New-ZipEntry.md)cmdlets.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ZipEntryBase[]</command:parameterValue>
        <dev:type>
          <maml:name>ZipEntryBase[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>PSCompression.Abstractions.ZipEntryBase</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe instances of `ZipEntryFile` or `ZipEntryDirectory` to this cmdlet. These instances are produced by `Get-ZipEntry` (Get-ZipEntry.md) and [`New-ZipEntry`](New-ZipEntry.md)cmdlets.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet produces no output.</maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>System.IO.FileSystemInfo</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>The cmdlet outputs the `FileInfo` and `DirectoryInfo` instances of the extracted entries when `-PassThru` switch is used.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert />
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>Example 1: Extract all `.txt` files from a Zip Archive to the current directory</maml:title>
        <dev:code>PS ..\pwsh&gt; Get-ZipEntry path\to\myZip.zip -Include *.txt | Expand-ZipEntry</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 2: Extract all `.txt` files from a Zip Archive to the a desired directory</maml:title>
        <dev:code>PS ..\pwsh&gt; Get-ZipEntry path\to\myZip.zip -Include *.txt | Expand-ZipEntry -Destination path\to\myfolder</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 3: Extract all entries excluding `.txt` files to the current directory</maml:title>
        <dev:code>PS ..\pwsh&gt; Get-ZipEntry path\to\myZip.zip -Exclude *.txt | Expand-ZipEntry</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 4: Extract all entries excluding `.txt` files to the current directory overwritting existing files</maml:title>
        <dev:code>PS ..\pwsh&gt; Get-ZipEntry path\to\myZip.zip -Exclude *.txt | Expand-ZipEntry -Force</dev:code>
        <dev:remarks>
          <maml:para>Demonstrates how `-Force` switch works.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 5: Extract all entries excluding `.txt` files to the current directory outputting the expanded entries</maml:title>
        <dev:code>PS ..\pwsh&gt; Get-ZipEntry path\to\myZip.zip -Exclude *.txt | Expand-ZipEntry -PassThru</dev:code>
        <dev:remarks>
          <maml:para>By default this cmdlet produces no output. When `-PassThru` is used, this cmdlet outputs the `FileInfo` and `DirectoryInfo` instances representing the expanded entries.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------- Example 6: Extract an entry from input Stream --------</maml:title>
        <dev:code>PS ..\pwsh&gt; $package = Invoke-WebRequest https://www.powershellgallery.com/api/v2/package/PSCompression
PS ..\pwsh&gt; $file = $package | Get-ZipEntry -Include *.psd1 | Expand-ZipEntry -PassThru
PS ..\pwsh&gt; Get-Content $file.FullName -Raw | Invoke-Expression
 
Name Value
---- -----
PowerShellVersion 5.1
Description Zip and GZip utilities for PowerShell!
RootModule bin/netstandard2.0/PSCompression.dll
FormatsToProcess {PSCompression.Format.ps1xml}
VariablesToExport {}
PrivateData {[PSData, System.Collections.Hashtable]}
CmdletsToExport {Get-ZipEntry, Get-ZipEntryContent, Set-ZipEntryContent, Remove-ZipEntry…}
ModuleVersion 2.0.10
Author Santiago Squarzon
CompanyName Unknown
GUID c63aa90e-ae64-4ae1-b1c8-456e0d13967e
FunctionsToExport {}
RequiredAssemblies {System.IO.Compression, System.IO.Compression.FileSystem}
Copyright (c) Santiago Squarzon. All rights reserved.
AliasesToExport {gziptofile, gzipfromfile, gziptostring, gzipfromstring…}</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version:</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-TarEntry</command:name>
      <command:verb>Get</command:verb>
      <command:noun>TarEntry</command:noun>
      <maml:description>
        <maml:para>Lists tar archive entries from a specified path or input stream.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Get-TarEntry` cmdlet lists entries in tar archives, including both uncompressed (`.tar`) and compressed formats (e.g., `.tar.gz`, `.tar.bz2`, `.tar.zst`, `.tar.lz`). It supports input from file paths or streams and outputs `TarEntryFile` or `TarEntryDirectory` objects, which can be piped to cmdlets like `Expand-TarEntry` (./Expand-TarEntry.md) and [`Get-TarEntryContent`](./Get-TarEntryContent.md). The cmdlet uses libraries such as `SharpZipLib` for tar handling, `System.IO.Compression` for gzip, `SharpCompress` for lzip, and `ZstdSharp` for Zstandard. Use `-Include` and `-Exclude` to filter entries by name and `-Type` to filter by entry type (file or directory).</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-TarEntry</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RawContentStream">
          <maml:name>InputStream</maml:name>
          <maml:description>
            <maml:para>Specifies an input stream containing a tar archive.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; &gt; - Output from `Invoke-WebRequest` is automatically bound to this parameter. &gt; - The cmdlet defaults to the `gz` (gzip) algorithm for streams. Specify `-Algorithm` to match the compression type (e.g., `-Algorithm zst` for Zstandard) to avoid errors.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Stream</command:parameterValue>
          <dev:type>
            <maml:name>Stream</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Algorithm</maml:name>
          <maml:description>
            <maml:para>Specifies the compression algorithm used for the tar archive. Accepted values and their corresponding file extensions are:</maml:para>
            <maml:para>- `gz`: Gzip compression (`.gz`, `.gzip`, `.tgz`).</maml:para>
            <maml:para>- `bz2`: Bzip2 compression (`.bz2`, `.bzip2`, `.tbz2`, `.tbz`)</maml:para>
            <maml:para>- `zst`: Zstandard compression (`.zst`).</maml:para>
            <maml:para>- `lz`: Lzip compression (`.lz`).</maml:para>
            <maml:para>- `none`: Uncompressed tar archive (`.tar`).</maml:para>
            <maml:para></maml:para>
            <maml:para>&gt; [!NOTE] &gt; If not specified, the cmdlet infers the algorithm from the file extension. If the extension is unrecognized, it defaults to `none` (uncompressed tar).</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">gz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">bz2</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">zst</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">lz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">none</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">Algorithm</command:parameterValue>
          <dev:type>
            <maml:name>Algorithm</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Exclude</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are excluded from the output. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Include</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are included in the output. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Type</maml:name>
          <maml:description>
            <maml:para>Filters entries by type: `Archive` for files or `Directory` for directories.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Directory</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Archive</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">EntryType</command:parameterValue>
          <dev:type>
            <maml:name>EntryType</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-TarEntry</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Algorithm</maml:name>
          <maml:description>
            <maml:para>Specifies the compression algorithm used for the tar archive. Accepted values and their corresponding file extensions are:</maml:para>
            <maml:para>- `gz`: Gzip compression (`.gz`, `.gzip`, `.tgz`).</maml:para>
            <maml:para>- `bz2`: Bzip2 compression (`.bz2`, `.bzip2`, `.tbz2`, `.tbz`)</maml:para>
            <maml:para>- `zst`: Zstandard compression (`.zst`).</maml:para>
            <maml:para>- `lz`: Lzip compression (`.lz`).</maml:para>
            <maml:para>- `none`: Uncompressed tar archive (`.tar`).</maml:para>
            <maml:para></maml:para>
            <maml:para>&gt; [!NOTE] &gt; If not specified, the cmdlet infers the algorithm from the file extension. If the extension is unrecognized, it defaults to `none` (uncompressed tar).</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">gz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">bz2</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">zst</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">lz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">none</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">Algorithm</command:parameterValue>
          <dev:type>
            <maml:name>Algorithm</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Exclude</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are excluded from the output. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Include</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are included in the output. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="PSPath">
          <maml:name>LiteralPath</maml:name>
          <maml:description>
            <maml:para>Specifies one or more paths to tar archives. The value is used exactly as typed, with no wildcard character interpretation.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Type</maml:name>
          <maml:description>
            <maml:para>Filters entries by type: `Archive` for files or `Directory` for directories.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Directory</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Archive</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">EntryType</command:parameterValue>
          <dev:type>
            <maml:name>EntryType</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-TarEntry</maml:name>
        <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies one or more paths to tar archives. Wildcard characters are supported.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Algorithm</maml:name>
          <maml:description>
            <maml:para>Specifies the compression algorithm used for the tar archive. Accepted values and their corresponding file extensions are:</maml:para>
            <maml:para>- `gz`: Gzip compression (`.gz`, `.gzip`, `.tgz`).</maml:para>
            <maml:para>- `bz2`: Bzip2 compression (`.bz2`, `.bzip2`, `.tbz2`, `.tbz`)</maml:para>
            <maml:para>- `zst`: Zstandard compression (`.zst`).</maml:para>
            <maml:para>- `lz`: Lzip compression (`.lz`).</maml:para>
            <maml:para>- `none`: Uncompressed tar archive (`.tar`).</maml:para>
            <maml:para></maml:para>
            <maml:para>&gt; [!NOTE] &gt; If not specified, the cmdlet infers the algorithm from the file extension. If the extension is unrecognized, it defaults to `none` (uncompressed tar).</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">gz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">bz2</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">zst</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">lz</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">none</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">Algorithm</command:parameterValue>
          <dev:type>
            <maml:name>Algorithm</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Exclude</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are excluded from the output. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Include</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are included in the output. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Type</maml:name>
          <maml:description>
            <maml:para>Filters entries by type: `Archive` for files or `Directory` for directories.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Directory</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Archive</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">EntryType</command:parameterValue>
          <dev:type>
            <maml:name>EntryType</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Algorithm</maml:name>
        <maml:description>
          <maml:para>Specifies the compression algorithm used for the tar archive. Accepted values and their corresponding file extensions are:</maml:para>
          <maml:para>- `gz`: Gzip compression (`.gz`, `.gzip`, `.tgz`).</maml:para>
          <maml:para>- `bz2`: Bzip2 compression (`.bz2`, `.bzip2`, `.tbz2`, `.tbz`)</maml:para>
          <maml:para>- `zst`: Zstandard compression (`.zst`).</maml:para>
          <maml:para>- `lz`: Lzip compression (`.lz`).</maml:para>
          <maml:para>- `none`: Uncompressed tar archive (`.tar`).</maml:para>
          <maml:para></maml:para>
          <maml:para>&gt; [!NOTE] &gt; If not specified, the cmdlet infers the algorithm from the file extension. If the extension is unrecognized, it defaults to `none` (uncompressed tar).</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Algorithm</command:parameterValue>
        <dev:type>
          <maml:name>Algorithm</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
        <maml:name>Exclude</maml:name>
        <maml:description>
          <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are excluded from the output. Wildcard characters are supported.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
        <maml:name>Include</maml:name>
        <maml:description>
          <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are included in the output. Wildcard characters are supported.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RawContentStream">
        <maml:name>InputStream</maml:name>
        <maml:description>
          <maml:para>Specifies an input stream containing a tar archive.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; &gt; - Output from `Invoke-WebRequest` is automatically bound to this parameter. &gt; - The cmdlet defaults to the `gz` (gzip) algorithm for streams. Specify `-Algorithm` to match the compression type (e.g., `-Algorithm zst` for Zstandard) to avoid errors.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Stream</command:parameterValue>
        <dev:type>
          <maml:name>Stream</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="PSPath">
        <maml:name>LiteralPath</maml:name>
        <maml:description>
          <maml:para>Specifies one or more paths to tar archives. The value is used exactly as typed, with no wildcard character interpretation.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies one or more paths to tar archives. Wildcard characters are supported.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Type</maml:name>
        <maml:description>
          <maml:para>Filters entries by type: `Archive` for files or `Directory` for directories.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">EntryType</command:parameterValue>
        <dev:type>
          <maml:name>EntryType</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.IO.Stream</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe a stream containing a tar archive to this cmdlet, such as output from `Invoke-WebRequest`.</maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.String[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe strings containing paths to tar archives, such as output from `Get-ChildItem` or `Get-Item`.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>PSCompression.TarEntryDirectory</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>PSCompression.TarEntryFile</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>Outputs objects representing directories or files in the tar archive.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>----- Example 1: List entries for a specified tar archive -----</maml:title>
        <dev:code>PS ..\pwsh&gt; Get-TarEntry .\archive.tar
 
   Directory: /folder1/
 
Type LastWriteTime Size Name
---- ------------- ---- ----
Directory 6/23/2025 11:08 PM folder1
Archive 6/23/2025 11:08 PM 1.00 KB file1.txt
Archive 6/23/2025 11:08 PM 2.00 KB file2.txt</dev:code>
        <dev:remarks>
          <maml:para>Lists all entries in `archive.tar`, including directories and files.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 2: List entries from all gzip-compressed tar archives in the current directory</maml:title>
        <dev:code>PS ..\pwsh&gt; Get-TarEntry *.tar.gz
 
   Directory: /folder1/
 
Type LastWriteTime Size Name
---- ------------- ---- ----
Directory 6/23/2025 11:08 PM folder1
Archive 6/23/2025 11:08 PM 1.00 KB file1.txt
Archive 6/23/2025 11:08 PM 2.00 KB file2.txt</dev:code>
        <dev:remarks>
          <maml:para>&gt; [!TIP] &gt; The `-Path` parameter supports wildcards.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>----- Example 3: List all file entries from a tar archive -----</maml:title>
        <dev:code>PS C:\&gt; Get-TarEntry .\archive.tar -Type Archive
 
   Directory: /folder1/
 
Type LastWriteTime Size Name
---- ------------- ---- ----
Archive 6/23/2025 11:08 PM 1.00 KB file1.txt
Archive 6/23/2025 11:08 PM 2.00 KB file2.txt</dev:code>
        <dev:remarks>
          <maml:para>Filters entries to show only files using `-Type Archive`.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title> Example 4: Filter entries with Include and Exclude parameters </maml:title>
        <dev:code>PS C:\&gt; Get-TarEntry .\archive.tbz2 -Include folder1/* -Exclude *.txt
 
   Directory: /folder1/
 
Type LastWriteTime Size Name
---- ------------- ---- ----
Directory 2025-06-23 7:00 PM folder1
Archive 2025-06-23 7:00 PM 3.00 KB image.png</dev:code>
        <dev:remarks>
          <maml:para>Filters entries to include only those under `folder1/` but excludes `.txt` files.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; If not specified, the cmdlet infers the compression algorithm from the file extension: `gz` for `.gz`, `.gzip`, `.tgz`; `bz2` for `.bz2`, `.bzip2`, `.tbz2`, `.tbz`; `zst` for `.zst`; `lz` for `.lz`; `none` for `.tar`. If the extension is unrecognized, it defaults to `none` (uncompressed tar).</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--------- Example 5: List entries from an input stream ---------</maml:title>
        <dev:code>PS C:\&gt; $stream = Invoke-WebRequest https://example.com/archive.tar.gz
PS C:\&gt; $stream | Get-TarEntry -Algorithm gz | Select-Object -First 3
 
   Directory: /docs/
 
Type LastWriteTime Size Name
---- ------------- ---- ----
Directory 2025-06-23 7:00 PM docs/
Archive 2025-06-23 7:00 PM 1.50 KB readme.md
Archive 2025-06-23 7:00 PM 2.50 KB license.txt</dev:code>
        <dev:remarks>
          <maml:para>Lists the first three entries from a gzip-compressed tar archive stream, specifying `-Algorithm gz`.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; When processing a stream, the cmdlet defaults to the `gz` (gzip) algorithm. Specify `-Algorithm` (e.g., `-Algorithm bz2` for bzip2) to match the compression type, or an error may occur if the stream is not gzip-compressed.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>__Expand-TarEntry__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__Expand-TarArchive__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__Get-TarEntryContent__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__SharpZipLib__</maml:linkText>
        <maml:uri>https://github.com/icsharpcode/SharpZipLib</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__SharpCompress__</maml:linkText>
        <maml:uri>https://github.com/adamhathcock/sharpcompress</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__ZstdSharp__</maml:linkText>
        <maml:uri>https://github.com/oleg-st/ZstdSharp</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__System.IO.Compression__</maml:linkText>
        <maml:uri>https://learn.microsoft.com/en-us/dotnet/api/system.io.compression?view=net-6.0</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-TarEntryContent</command:name>
      <command:verb>Get</command:verb>
      <command:noun>TarEntryContent</command:noun>
      <maml:description>
        <maml:para>Gets the content of a tar archive entry.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Get-TarEntryContent` cmdlet retrieves the content of one or more `TarEntryFile` instances. This cmdlet is designed to be used with `Get-TarEntry` (./Get-TarEntry.md)as the entry point.</maml:para>
      <maml:para>&gt; [!TIP] &gt; Entries output by `Get-TarEntry` can be piped to this cmdlet.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-TarEntryContent</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AsByteStream</maml:name>
          <maml:description>
            <maml:para>Specifies that the content should be read as a stream of bytes.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>BufferSize</maml:name>
          <maml:description>
            <maml:para>Determines the number of bytes read into the buffer before outputting the stream of bytes. This parameter applies only when `-Raw` is not used. The default buffer size is 128 KiB.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>128000</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Entry</maml:name>
          <maml:description>
            <maml:para>The tar entry or entries to get the content from. This parameter is designed to accept pipeline input from `Get-TarEntry` but can also be used as a named parameter.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">TarEntryFile[]</command:parameterValue>
          <dev:type>
            <maml:name>TarEntryFile[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Raw</maml:name>
          <maml:description>
            <maml:para>Returns the entire contents of an entry as a single string with newlines preserved, ignoring newline characters. By default, newline characters are used to separate the content into an array of strings.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-TarEntryContent</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Encoding</maml:name>
          <maml:description>
            <maml:para>Specifies the character encoding used to read the entry content. . The default encoding is `utf8NoBOM`.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter applies only when `-AsByteStream` is not used. &gt; - The default encoding is `utf8NoBOM` .</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
          <dev:type>
            <maml:name>Encoding</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>utf8NoBOM</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Entry</maml:name>
          <maml:description>
            <maml:para>The tar entry or entries to get the content from. This parameter is designed to accept pipeline input from `Get-TarEntry` but can also be used as a named parameter.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">TarEntryFile[]</command:parameterValue>
          <dev:type>
            <maml:name>TarEntryFile[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Raw</maml:name>
          <maml:description>
            <maml:para>Returns the entire contents of an entry as a single string with newlines preserved, ignoring newline characters. By default, newline characters are used to separate the content into an array of strings.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AsByteStream</maml:name>
        <maml:description>
          <maml:para>Specifies that the content should be read as a stream of bytes.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>BufferSize</maml:name>
        <maml:description>
          <maml:para>Determines the number of bytes read into the buffer before outputting the stream of bytes. This parameter applies only when `-Raw` is not used. The default buffer size is 128 KiB.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>128000</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Encoding</maml:name>
        <maml:description>
          <maml:para>Specifies the character encoding used to read the entry content. . The default encoding is `utf8NoBOM`.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter applies only when `-AsByteStream` is not used. &gt; - The default encoding is `utf8NoBOM` .</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
        <dev:type>
          <maml:name>Encoding</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>utf8NoBOM</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Entry</maml:name>
        <maml:description>
          <maml:para>The tar entry or entries to get the content from. This parameter is designed to accept pipeline input from `Get-TarEntry` but can also be used as a named parameter.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">TarEntryFile[]</command:parameterValue>
        <dev:type>
          <maml:name>TarEntryFile[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Raw</maml:name>
        <maml:description>
          <maml:para>Returns the entire contents of an entry as a single string with newlines preserved, ignoring newline characters. By default, newline characters are used to separate the content into an array of strings.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>PSCompression.TarEntryFile[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe instances of `TarEntryFile` to this cmdlet, produced by `Get-TarEntry` (./Get-TarEntry.md).</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet returns the content as an array of strings, one per line. When the `-Raw` parameter is used, it returns a single string.</maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Byte</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>This cmdlet returns the content as bytes when the `-AsByteStream` parameter is used.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------ Example 1: Get the content of a tar archive entry ------</maml:title>
        <dev:code>PS C:\&gt; Get-TarEntry .\archive.tar -Include folder1/file1.txt | Get-TarEntryContent
 
Line 1 of file1.txt
Line 2 of file1.txt</dev:code>
        <dev:remarks>
          <maml:para>The `-Include` parameter from `Get-TarEntry` targets a specific entry by its relative path, and the output is piped to `Get-TarEntryContent`. By default, the cmdlet streams content line by line.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>------ Example 2: Get raw content of a tar archive entry ------</maml:title>
        <dev:code>PS C:\&gt; Get-TarEntry .\archive.tar -Include folder1/file1.txt | Get-TarEntryContent -Raw
 
Line 1 of file1.txt
Line 2 of file1.txt</dev:code>
        <dev:remarks>
          <maml:para>The cmdlet outputs a single multi-line string when the `-Raw` switch is used instead of line-by-line streaming.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>- Example 3: Get the bytes of a tar archive entry as a stream -</maml:title>
        <dev:code>PS C:\&gt; $bytes = Get-TarEntry .\archive.tar -Include folder1/helloworld.txt | Get-TarEntryContent -AsByteStream
PS C:\&gt; $bytes
104
101
108
108
111
32
119
111
114
108
100
33
13
10
 
PS C:\&gt; [System.Text.Encoding]::UTF8.GetString($bytes)
hello world!</dev:code>
        <dev:remarks>
          <maml:para>The `-AsByteStream` switch is useful for reading non-text tar entries.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-- Example 4: Get contents of all `.md` files as byte arrays --</maml:title>
        <dev:code>PS C:\&gt; $bytes = Get-TarEntry .\archive.tar.gz -Algorithm gz -Include *.md | Get-TarEntryContent -AsByteStream -Raw
PS C:\&gt; $bytes[0].GetType()
 
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Byte[] System.Array
 
PS C:\&gt; $bytes[1].Length
7767</dev:code>
        <dev:remarks>
          <maml:para>When the `-Raw` and `-AsByteStream` switches are used together, the cmdlet outputs `byte[]` as single objects for each tar entry.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--------- Example 5: Get content from an input stream ---------</maml:title>
        <dev:code>PS C:\&gt; $stream = Invoke-WebRequest https://example.com/archive.tar.gz
PS C:\&gt; $content = $stream | Get-TarEntry -Include readme.md -Algorithm gz | Get-TarEntryContent -Raw
PS C:\&gt; $content
 
# My Project
This is the README file for my project.</dev:code>
        <dev:remarks>
          <maml:para>&gt; [!NOTE] &gt; When `Get-TarEntry` processes a stream, it defaults to the `gz` (gzip) algorithm. Specify `-Algorithm` (e.g., `-Algorithm bz2` for bzip2) to match the compression type, or an error may occur if the stream is not gzip-compressed.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>__Get-TarEntry__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__Expand-TarEntry__</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__SharpZipLib__</maml:linkText>
        <maml:uri>https://github.com/icsharpcode/SharpZipLib</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__SharpCompress__</maml:linkText>
        <maml:uri>https://github.com/adamhathcock/sharpcompress</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>__ZstdSharp__</maml:linkText>
        <maml:uri>https://github.com/oleg-st/ZstdSharp</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-ZipEntry</command:name>
      <command:verb>Get</command:verb>
      <command:noun>ZipEntry</command:noun>
      <maml:description>
        <maml:para>Lists zip archive entries from a specified path or input stream.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Get-ZipEntry` cmdlet is the main entry point for the `*-ZipEntry` cmdlets in this module. It can list zip archive entries from specified paths or input stream.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-ZipEntry</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Type</maml:name>
          <maml:description>
            <maml:para>Filters entries by type: `Archive` for files or `Directory` for directories.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Directory</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Archive</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">EntryType</command:parameterValue>
          <dev:type>
            <maml:name>EntryType</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Exclude</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are excluded from the output. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Include</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are included in the output. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="PSPath">
          <maml:name>LiteralPath</maml:name>
          <maml:description>
            <maml:para>Specifies a path to one or more zip archives. Note that the value is used exactly as it's typed. No characters are interpreted as wildcards.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-ZipEntry</maml:name>
        <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>Path</maml:name>
          <maml:description>
            <maml:para>Specifies a path to one or more zip archives. Wildcards are accepted.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Type</maml:name>
          <maml:description>
            <maml:para>Filters entries by type: `Archive` for files or `Directory` for directories.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Directory</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Archive</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">EntryType</command:parameterValue>
          <dev:type>
            <maml:name>EntryType</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Exclude</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are excluded from the output. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Include</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are included in the output. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-ZipEntry</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RawContentStream">
          <maml:name>InputStream</maml:name>
          <maml:description>
            <maml:para>Specifies an input stream containing a zip archive.</maml:para>
            <maml:para>&gt; [!TIP] &gt; Output from `Invoke-WebRequest` is bound to this paremeter automatically.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Stream</command:parameterValue>
          <dev:type>
            <maml:name>Stream</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Type</maml:name>
          <maml:description>
            <maml:para>Filters entries by type: `Archive` for files or `Directory` for directories.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Directory</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Archive</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">EntryType</command:parameterValue>
          <dev:type>
            <maml:name>EntryType</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Exclude</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are excluded from the output. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
          <maml:name>Include</maml:name>
          <maml:description>
            <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are included in the output. Wildcard characters are supported.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Type</maml:name>
        <maml:description>
          <maml:para>Filters entries by type: `Archive` for files or `Directory` for directories.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">EntryType</command:parameterValue>
        <dev:type>
          <maml:name>EntryType</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
        <maml:name>Exclude</maml:name>
        <maml:description>
          <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are excluded from the output. Wildcard characters are supported.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="False" position="named" aliases="none">
        <maml:name>Include</maml:name>
        <maml:description>
          <maml:para>Specifies an array of string patterns to match as the cmdlet lists entries. Matching entries are included in the output. Wildcard characters are supported.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; Inclusion and exclusion patterns are applied to the entries’ relative paths. Exclusions are applied after inclusions.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="PSPath">
        <maml:name>LiteralPath</maml:name>
        <maml:description>
          <maml:para>Specifies a path to one or more zip archives. Note that the value is used exactly as it's typed. No characters are interpreted as wildcards.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>Path</maml:name>
        <maml:description>
          <maml:para>Specifies a path to one or more zip archives. Wildcards are accepted.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="RawContentStream">
        <maml:name>InputStream</maml:name>
        <maml:description>
          <maml:para>Specifies an input stream containing a zip archive.</maml:para>
          <maml:para>&gt; [!TIP] &gt; Output from `Invoke-WebRequest` is bound to this paremeter automatically.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Stream</command:parameterValue>
        <dev:type>
          <maml:name>Stream</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe a string that contains a paths to this cmdlet. Output from `Get-ChildItem` or `Get-Item` can be piped to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>Stream</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe a Stream to this cmdlet. Output from `Invoke-WebRequest` can be piped to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>PSCompression.ZipEntryDirectory</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>PSCompression.ZipEntryFile</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert />
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------ Example 1: List entries for a specified file path ------</maml:title>
        <dev:code>PS ..\pwsh&gt; Get-ZipEntry path\to\myZip.zip</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 2: List entries from all files with `.zip` extension in the current directory</maml:title>
        <dev:code>PS ..\pwsh&gt; Get-ZipEntry *.zip</dev:code>
        <dev:remarks>
          <maml:para>The `-Path` parameter supports wildcards.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>---- Example 3: List all `Archive` entries from a Zip file ----</maml:title>
        <dev:code>PS ..\pwsh&gt; Get-ZipEntry path\to\myZip.zip -Type Archive</dev:code>
        <dev:remarks>
          <maml:para>&gt; [!TIP] &gt; The `-Type` parameter supports filtering by `Archive` or `Directory`.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 4: Filtering entries with `-Include` and `-Exclude` parameters</maml:title>
        <dev:code>PS ..\pwsh&gt; Get-ZipEntry .\PSCompression.zip -Include PSCompression/docs/en-us*
 
   Directory: /PSCompression/docs/en-US/
 
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Directory 2/22/2024 1:19 PM 0.00 B en-US
Archive 2/22/2024 1:19 PM 2.08 KB 6.98 KB Compress-GzipArchive.md
Archive 2/22/2024 1:19 PM 2.74 KB 8.60 KB Compress-ZipArchive.md
Archive 2/22/2024 1:19 PM 1.08 KB 2.67 KB ConvertFrom-GzipString.md
Archive 2/22/2024 1:19 PM 1.67 KB 4.63 KB ConvertTo-GzipString.md
Archive 2/22/2024 1:19 PM 1.74 KB 6.28 KB Expand-GzipArchive.md
Archive 2/22/2024 1:19 PM 1.23 KB 4.07 KB Expand-ZipEntry.md
Archive 2/22/2024 1:19 PM 1.53 KB 6.38 KB Get-ZipEntry.md
Archive 2/22/2024 1:19 PM 1.67 KB 5.06 KB Get-ZipEntryContent.md
Archive 2/22/2024 1:19 PM 2.20 KB 7.35 KB New-ZipEntry.md
Archive 2/22/2024 1:19 PM 961.00 B 2.62 KB PSCompression.md
Archive 2/22/2024 1:19 PM 1.14 KB 2.95 KB Remove-ZipEntry.md
Archive 2/22/2024 1:19 PM 741.00 B 2.16 KB Rename-ZipEntry.md
Archive 2/22/2024 1:19 PM 1.55 KB 5.35 KB Set-ZipEntryContent.md
 
PS ..\pwsh&gt; Get-ZipEntry .\PSCompression.zip -Include PSCompression/docs/en-us* -Exclude *en-US/Compress*, *en-US/Remove*
 
   Directory: /PSCompression/docs/en-US/
 
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Directory 2/22/2024 1:19 PM 0.00 B en-US
Archive 2/22/2024 1:19 PM 1.08 KB 2.67 KB ConvertFrom-GzipString.md
Archive 2/22/2024 1:19 PM 1.67 KB 4.63 KB ConvertTo-GzipString.md
Archive 2/22/2024 1:19 PM 1.74 KB 6.28 KB Expand-GzipArchive.md
Archive 2/22/2024 1:19 PM 1.23 KB 4.07 KB Expand-ZipEntry.md
Archive 2/22/2024 1:19 PM 1.53 KB 6.38 KB Get-ZipEntry.md
Archive 2/22/2024 1:19 PM 1.67 KB 5.06 KB Get-ZipEntryContent.md
Archive 2/22/2024 1:19 PM 2.20 KB 7.35 KB New-ZipEntry.md
Archive 2/22/2024 1:19 PM 961.00 B 2.62 KB PSCompression.md
Archive 2/22/2024 1:19 PM 741.00 B 2.16 KB Rename-ZipEntry.md
Archive 2/22/2024 1:19 PM 1.55 KB 5.35 KB Set-ZipEntryContent.md</dev:code>
        <dev:remarks>
          <maml:para>&gt; [!NOTE] &gt; &gt; - Inclusion and Exclusion patterns are applied to the entries relative path. &gt; - Exclusions are applied after the inclusions.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--------- Example 5: List entries from an input Stream ---------</maml:title>
        <dev:code>PS ..\pwsh&gt; $package = Invoke-WebRequest https://www.powershellgallery.com/api/v2/package/PSCompression
PS ..\pwsh&gt; $package | Get-ZipEntry | Select-Object -First 5
 
   Directory: /
 
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Archive 11/6/2024 10:29 PM 227.00 B 785.00 B [Content_Types].xml
Archive 11/6/2024 10:27 PM 516.00 B 2.50 KB PSCompression.Format.ps1xml
Archive 11/6/2024 10:29 PM 598.00 B 1.58 KB PSCompression.nuspec
Archive 11/6/2024 10:27 PM 1.66 KB 5.45 KB PSCompression.psd1
 
   Directory: /_rels/
 
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Archive 11/6/2024 10:29 PM 276.00 B 507.00 B .rels
 
   Directory: /bin/netstandard2.0/
 
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Archive 11/6/2024 10:28 PM 996.00 B 3.12 KB PSCompression.deps.json
Archive 11/6/2024 10:28 PM 28.73 KB 66.00 KB PSCompression.dll
Archive 11/6/2024 10:28 PM 14.75 KB 29.39 KB PSCompression.pdb
 
   Directory: /en-US/
 
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Archive 11/6/2024 10:28 PM 8.33 KB 106.86 KB PSCompression-help.xml
Archive 11/6/2024 10:28 PM 9.19 KB 103.84 KB PSCompression.dll-Help.xml
 
   Directory: /package/services/metadata/core-properties/
 
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Archive 11/6/2024 10:29 PM 635.00 B 1.55 KB 3212d87de09c4241a06e0166a08c3b13.psmdcp</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version:</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-ZipEntryContent</command:name>
      <command:verb>Get</command:verb>
      <command:noun>ZipEntryContent</command:noun>
      <maml:description>
        <maml:para>Gets the content of a zip entry.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Get-ZipEntryContent` cmdlet gets the content of one or more `ZipEntryFile` instances. This cmdlet is meant to be used with `Get-ZipEntry` (./Get-ZipEntry.md)as your entry point.</maml:para>
      <maml:para>&gt; [!TIP] &gt; Entries outputted by `Get-ZipEntry` can be piped to this cmdlet.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-ZipEntryContent</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>BufferSize</maml:name>
          <maml:description>
            <maml:para>Determines the number of bytes read into the buffer before outputting the stream of bytes. This parameter applies only when `-Raw` is not used. The default buffer size is 128 KiB.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>128000</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Raw</maml:name>
          <maml:description>
            <maml:para>Returns the entire contents of an entry as a single string with newlines preserved, ignoring newline characters. By default, newline characters are used to separate the content into an array of strings.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Entry</maml:name>
          <maml:description>
            <maml:para>The zip entry or entries to get the content from. This parameter is designed to accept pipeline input from `Get-ZipEntry` but can also be used as a named parameter.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ZipEntryFile[]</command:parameterValue>
          <dev:type>
            <maml:name>ZipEntryFile[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AsByteStream</maml:name>
          <maml:description>
            <maml:para>Specifies that the content should be read as a stream of bytes.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Get-ZipEntryContent</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Encoding</maml:name>
          <maml:description>
            <maml:para>Specifies the character encoding used to read the entry content. . The default encoding is `utf8NoBOM`.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter applies only when `-AsByteStream` is not used. &gt; - The default encoding is `utf8NoBOM` .</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
          <dev:type>
            <maml:name>Encoding</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>utf8NoBOM</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Raw</maml:name>
          <maml:description>
            <maml:para>Returns the entire contents of an entry as a single string with newlines preserved, ignoring newline characters. By default, newline characters are used to separate the content into an array of strings.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Entry</maml:name>
          <maml:description>
            <maml:para>The zip entry or entries to get the content from. This parameter is designed to accept pipeline input from `Get-ZipEntry` but can also be used as a named parameter.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ZipEntryFile[]</command:parameterValue>
          <dev:type>
            <maml:name>ZipEntryFile[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>BufferSize</maml:name>
        <maml:description>
          <maml:para>Determines the number of bytes read into the buffer before outputting the stream of bytes. This parameter applies only when `-Raw` is not used. The default buffer size is 128 KiB.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>128000</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Encoding</maml:name>
        <maml:description>
          <maml:para>Specifies the character encoding used to read the entry content. . The default encoding is `utf8NoBOM`.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter applies only when `-AsByteStream` is not used. &gt; - The default encoding is `utf8NoBOM` .</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
        <dev:type>
          <maml:name>Encoding</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>utf8NoBOM</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Raw</maml:name>
        <maml:description>
          <maml:para>Returns the entire contents of an entry as a single string with newlines preserved, ignoring newline characters. By default, newline characters are used to separate the content into an array of strings.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Entry</maml:name>
        <maml:description>
          <maml:para>The zip entry or entries to get the content from. This parameter is designed to accept pipeline input from `Get-ZipEntry` but can also be used as a named parameter.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ZipEntryFile[]</command:parameterValue>
        <dev:type>
          <maml:name>ZipEntryFile[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AsByteStream</maml:name>
        <maml:description>
          <maml:para>Specifies that the content should be read as a stream of bytes.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>PSCompression.ZipEntryFile</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe instances of `ZipEntryFile` to this cmdlet. These instances are produced by `Get-ZipEntry` (Get-ZipEntry.md) and [`New-ZipEntry`](New-ZipEntry.md)cmdlets.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet returns the content as an array of strings, one per line. When the `-Raw` parameter is used, it returns a single string.</maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Byte</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>This cmdlet returns the content as bytes when the `-AsByteStream` parameter is used.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert />
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------ Example 1: Get the content of a Zip Archive Entry ------</maml:title>
        <dev:code>PS ..pwsh\&gt; Get-ZipEntry .\myZip.zip -Include myrelative/entry.txt | Get-ZipEntryContent</dev:code>
        <dev:remarks>
          <maml:para>`-Include` parameter from `Get-ZipEntry` can be used to target a specific entry by passing the entry's relative path, from there the output can be piped directly to `Get-ZipEntryContent`. By default, the cmdlet streams line-by-line .</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>------ Example 2: Get raw content of a Zip Archive Entry ------</maml:title>
        <dev:code>PS ..pwsh\&gt; Get-ZipEntry .\myZip.zip -Include myrelative/entry.txt | Get-ZipEntryContent -Raw</dev:code>
        <dev:remarks>
          <maml:para>The cmdlet outputs a single multi-line string when the `-Raw` switch is used instead of line-by-line streaming.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>- Example 3: Get the bytes of a Zip Archive Entry as a Stream -</maml:title>
        <dev:code>PS ..pwsh\&gt; $bytes = Get-ZipEntry .\test.zip -Include test/helloworld.txt | Get-ZipEntryContent -AsByteStream
PS ..pwsh\&gt; $bytes
104
101
108
108
111
32
119
111
114
108
100
33
13
10
 
PS ..pwsh\&gt; [System.Text.Encoding]::UTF8.GetString($bytes)
hello world!</dev:code>
        <dev:remarks>
          <maml:para>The `-AsByteStream` switch can be useful to read non-text zip entries.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-- Example 4: Get contents of all `.md` files as byte arrays --</maml:title>
        <dev:code>PS ..pwsh\&gt; $bytes = Get-ZipEntry .\test.zip -Include *.md | Get-ZipEntryContent -AsByteStream -Raw
PS ..pwsh\&gt; $bytes[0].GetType()
 
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Byte[] System.Array
 
PS ..pwsh\&gt; $bytes[1].Length
7767</dev:code>
        <dev:remarks>
          <maml:para>When the `-Raw` and `-AsByteStream` switches are used together the cmdlet outputs `byte[]` as single objects for each zip entry.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>----------- Example 5: Get content from input Stream -----------</maml:title>
        <dev:code>PS ..\pwsh&gt; $package = Invoke-WebRequest https://www.powershellgallery.com/api/v2/package/PSCompression
PS ..\pwsh&gt; $package | Get-ZipEntry -Include *.psd1 | Get-ZipEntryContent -Raw | Invoke-Expression
 
Name Value
---- -----
PowerShellVersion 5.1
Description Zip and GZip utilities for PowerShell!
RootModule bin/netstandard2.0/PSCompression.dll
FormatsToProcess {PSCompression.Format.ps1xml}
VariablesToExport {}
PrivateData {[PSData, System.Collections.Hashtable]}
CmdletsToExport {Get-ZipEntry, Get-ZipEntryContent, Set-ZipEntryContent, Remove-ZipEntry…}
ModuleVersion 2.0.10
Author Santiago Squarzon
CompanyName Unknown
GUID c63aa90e-ae64-4ae1-b1c8-456e0d13967e
FunctionsToExport {}
RequiredAssemblies {System.IO.Compression, System.IO.Compression.FileSystem}
Copyright (c) Santiago Squarzon. All rights reserved.
AliasesToExport {gziptofile, gzipfromfile, gziptostring, gzipfromstring…}</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version:</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-ZipEntry</command:name>
      <command:verb>New</command:verb>
      <command:noun>ZipEntry</command:noun>
      <maml:description>
        <maml:para>Creates zip entries from one or more specified entry relative paths.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `New-ZipEntry` cmdlet can create one or more Zip Archive Entries from specified paths. The type of the created entries is determined by their path, for example, if a path ends with `` or `/`, the entry will be created as a `Directory` entry, otherwise it will be an `Archive` entry.</maml:para>
      <maml:para>Entry paths, arguments of the `-EntryPath` parameter , are always normalized, a few examples of how paths are normalized:</maml:para>
      <maml:para>| Input | Normalized As | | ------------------------------ | --------------------------- | | `C:\path\to\mynewentry.ext` | `path/to/mynewentry.ext` | | `\path\to\newdirectory` | `path/to/newdirectory/` | | `path\to\very/\random\/path\` | `path/to/very/random/path/` |</maml:para>
      <maml:para>&gt; [!TIP] &gt; The `[PSCompression.Extensions.PathExtensions]::NormalizePath(string path)` static method is available as a public API if you want to normalize your paths before creating new entries.</maml:para>
      <maml:para>In addition, `New-ZipEntry` can set the content of the entries that it creates from string input or by specifying a source file path.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-ZipEntry</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Destination</maml:name>
          <maml:description>
            <maml:para>Specifies the path to a Zip file where to create the entries. You can specify either a relative or an absolute path. A relative path is interpreted as relative to the current working directory. Note that the value is used exactly as it's typed. No characters are interpreted as wildcards.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>EntryPath</maml:name>
          <maml:description>
            <maml:para>Specifies the path to one or more entries to create in the destination Zip file. The Type of the created entries is determined by their path , for example, if the path ends with `` or `/`, the entry will be created as a `Directory` entry, otherwise it will be an `Archive` entry.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CompressionLevel</maml:name>
          <maml:description>
            <maml:para>Specifies values that indicate whether a compression operation emphasizes speed or compression size. See `CompressionLevel` Enum (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.compressionlevel)for details.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Optimal</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Fastest</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">NoCompression</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">SmallestSize</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">CompressionLevel</command:parameterValue>
          <dev:type>
            <maml:name>CompressionLevel</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Optimal</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Encoding</maml:name>
          <maml:description>
            <maml:para>The character encoding used to set the entry content.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter is applicable only when `-SourcePath` is not used. &gt; - The default encoding is `utf8NoBOM` .</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
          <dev:type>
            <maml:name>Encoding</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>utf8NoBOM</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>The cmdlet prevents creating entries in a destination Zip archive if an entry with the same relative path already exists. You can use the `-Force` parameter to overwrite them.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Value</maml:name>
          <maml:description>
            <maml:para>The string content that will be set to the created entries. You can also pipe a value to `New-ZipEntry`.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>New-ZipEntry</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Destination</maml:name>
          <maml:description>
            <maml:para>Specifies the path to a Zip file where to create the entries. You can specify either a relative or an absolute path. A relative path is interpreted as relative to the current working directory. Note that the value is used exactly as it's typed. No characters are interpreted as wildcards.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>EntryPath</maml:name>
          <maml:description>
            <maml:para>Specifies the path to one or more entries to create in the destination Zip file. The Type of the created entries is determined by their path , for example, if the path ends with `` or `/`, the entry will be created as a `Directory` entry, otherwise it will be an `Archive` entry.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>SourcePath</maml:name>
          <maml:description>
            <maml:para>The path to the file to be archived. You can specify either a relative or an absolute path. A relative path is interpreted as relative to the current working directory.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CompressionLevel</maml:name>
          <maml:description>
            <maml:para>Specifies values that indicate whether a compression operation emphasizes speed or compression size. See `CompressionLevel` Enum (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.compressionlevel)for details.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Optimal</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Fastest</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">NoCompression</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">SmallestSize</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">CompressionLevel</command:parameterValue>
          <dev:type>
            <maml:name>CompressionLevel</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Optimal</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>The cmdlet prevents creating entries in a destination Zip archive if an entry with the same relative path already exists. You can use the `-Force` parameter to overwrite them.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>CompressionLevel</maml:name>
        <maml:description>
          <maml:para>Specifies values that indicate whether a compression operation emphasizes speed or compression size. See `CompressionLevel` Enum (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.compressionlevel)for details.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">CompressionLevel</command:parameterValue>
        <dev:type>
          <maml:name>CompressionLevel</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Optimal</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Destination</maml:name>
        <maml:description>
          <maml:para>Specifies the path to a Zip file where to create the entries. You can specify either a relative or an absolute path. A relative path is interpreted as relative to the current working directory. Note that the value is used exactly as it's typed. No characters are interpreted as wildcards.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Encoding</maml:name>
        <maml:description>
          <maml:para>The character encoding used to set the entry content.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter is applicable only when `-SourcePath` is not used. &gt; - The default encoding is `utf8NoBOM` .</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
        <dev:type>
          <maml:name>Encoding</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>utf8NoBOM</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>EntryPath</maml:name>
        <maml:description>
          <maml:para>Specifies the path to one or more entries to create in the destination Zip file. The Type of the created entries is determined by their path , for example, if the path ends with `` or `/`, the entry will be created as a `Directory` entry, otherwise it will be an `Archive` entry.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>The cmdlet prevents creating entries in a destination Zip archive if an entry with the same relative path already exists. You can use the `-Force` parameter to overwrite them.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>SourcePath</maml:name>
        <maml:description>
          <maml:para>The path to the file to be archived. You can specify either a relative or an absolute path. A relative path is interpreted as relative to the current working directory.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Value</maml:name>
        <maml:description>
          <maml:para>The string content that will be set to the created entries. You can also pipe a value to `New-ZipEntry`.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe a value for the new zip entry to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>PSCompression.ZipEntryDirectory</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>PSCompression.ZipEntryFile</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert />
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>--------------- Example 1: Create empty entries ---------------</maml:title>
        <dev:code>PS ..\pwsh&gt; New-ZipEntry .\test.zip -EntryPath test\entry, newfolder\
 
   Directory: /newfolder/
 
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Directory 2/24/2024 3:22 PM 0.00 B 0.00 B newfolder
 
   Directory: /test/
 
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Archive 2/24/2024 3:22 PM 0.00 B 0.00 B entry</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-- Example 2: Create entries with content from input strings --</maml:title>
        <dev:code>PS ..\pwsh&gt; 'hello', 'world', '!' | New-ZipEntry .\test.zip -EntryPath test\entry, newfolder\
New-ZipEntry: An entry with path 'test/entry' already exists in 'path\to\test.zip'.
New-ZipEntry: An entry with path 'newfolder/' already exists in 'path\to\test.zip'.
 
PS ..\pwsh&gt; 'hello', 'world', '!' | New-ZipEntry .\test.zip -EntryPath test\entry, newfolder\ -Force
PS ..\pwsh&gt; Get-ZipEntry .\test.zip -Include test/entry | Get-ZipEntryContent
hello
world
!</dev:code>
        <dev:remarks>
          <maml:para>&gt; [!TIP] &gt; The cmdlet prevents creating entries in a destination Zip archive if an entry with the same relative path already exists. You can use the `-Force` parameter to overwrite them.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 3: Create entries with content from a source file path</maml:title>
        <dev:code>PS ..\pwsh&gt; $file = 'hello world!' | New-Item mytestfile.txt
PS ..\pwsh&gt; New-ZipEntry .\test.zip -SourcePath $file.FullName -EntryPath newentry.txt</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>----- Example 4: Archive all files in a specified location -----</maml:title>
        <dev:code>PS ..\pwsh&gt; $files = Get-ChildItem -File -Recurse
PS ..\pwsh&gt; $files | ForEach-Object { New-ZipEntry .\test.zip -SourcePath $_.FullName }</dev:code>
        <dev:remarks>
          <maml:para>&gt; [!TIP] &gt; The `-EntryPath` parameter is optional when creating an entry from a source file. &gt; If the entry path isn't specified, the cmdlet will using the file's `.FullName` in its normalized form.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 5: Archive all `.txt` files in a specified location using a specified encoding</maml:title>
        <dev:code>PS ..\pwsh&gt; $files = Get-ChildItem -File -Recurse -Filter *.txt
PS ..\pwsh&gt; $files | ForEach-Object {
   $_ | Get-Content -Encoding ascii |
      New-ZipEntry .\test.zip -EntryPath $_.FullName -Encoding ascii
}</dev:code>
        <dev:remarks>
          <maml:para>&gt; [!NOTE] &gt; As opposed to previous example, when creating entries from input values, the `-EntryPath` parameter is mandatory . In this case, when using an absolute path as `-EntryPath` the cmdlet will always create the entries using their normalized form as explained in __Description__ (#description).</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version:</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-ZipEntry</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>ZipEntry</command:noun>
      <maml:description>
        <maml:para>Removes zip entries from one or more zip archives.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Remove-ZipEntry` cmdlet can remove Zip Archive Entries from one or more Zip Archives. This cmdlet takes input from and is intended to be used in combination with the `Get-ZipEntry` (./Get-ZipEntry.md)cmdlet.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-ZipEntry</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>The entries that should be removed. This parameter can be and is meant to be bound from pipeline however can be also used as a named parameter.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ZipEntryBase[]</command:parameterValue>
          <dev:type>
            <maml:name>ZipEntryBase[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>The entries that should be removed. This parameter can be and is meant to be bound from pipeline however can be also used as a named parameter.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ZipEntryBase[]</command:parameterValue>
        <dev:type>
          <maml:name>ZipEntryBase[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>PSCompression.Abstractions.ZipEntryBase</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe instances of `ZipEntryFile` and `ZipEntryDirectory` to this cmdlet. These instances are produced by `Get-ZipEntry` (Get-ZipEntry.md) and [`New-ZipEntry`](New-ZipEntry.md)cmdlets.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>This cmdlet produces no output.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert />
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>- Example 1: Remove all Zip Archive Entries from a Zip Archive -</maml:title>
        <dev:code>PS ..pwsh\&gt; Get-ZipEntry .\myZip.zip | Remove-ZipEntry</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--- Example 2: Remove all `.txt` Entries from a Zip Archive ---</maml:title>
        <dev:code>PS ..pwsh\&gt; Get-ZipEntry .\myZip.zip -Include *.txt | Remove-ZipEntry</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-- Example 3: Prompt for confirmation before removing entries --</maml:title>
        <dev:code>PS ..pwsh\&gt; Get-ZipEntry .\myZip.zip -Include *.txt | Remove-ZipEntry -Confirm
 
Confirm
Are you sure you want to perform this action?
Performing the operation "Remove" on target "test/helloworld.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):</dev:code>
        <dev:remarks>
          <maml:para>This cmdlet supports `ShouldProcess` (https://learn.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-shouldprocess?view=powershell-7.3), you can prompt for confirmation before removing entries with `-Confirm` or check what the cmdlet would do without performing any action with `-WhatIf`.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version:</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Rename-ZipEntry</command:name>
      <command:verb>Rename</command:verb>
      <command:noun>ZipEntry</command:noun>
      <maml:description>
        <maml:para>Renames zip entries from one or more zip archives.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Rename-ZipEntry` cmdlet changes the name of a specified item. This cmdlet does not affect the content of the item being renamed.</maml:para>
      <maml:para>&gt; [!NOTE] &gt; &gt; - It's important to note that there is no API in the `System.IO.Compression` Namespace (https://learn.microsoft.com/en-us/dotnet/api/system.io.compression)to rename Zip Archive Entries, renaming an entry means creating a copy of the entry with a new name and deleting the old one. This is why the renaming operations can be slow on big Zip Archives. &gt; - When renaming an entry that is of type `Directory` you need to consider that the operation explained in the previous point happens to every entry that is considered a child of the directory you are renaming.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Rename-ZipEntry</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
          <maml:name>ZipEntry</maml:name>
          <maml:description>
            <maml:para>The zip entries to rename.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter takes input from pipeline, however binding by name is also possible. &gt; - The input are instances inheriting from `ZipEntryBase` (`ZipEntryFile` or `ZipEntryDirectory`) outputted by `Get-ZipEntry` (Get-ZipEntry.md) and [`New-ZipEntry`](New-ZipEntry.md)cmdlets.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ZipEntryBase</command:parameterValue>
          <dev:type>
            <maml:name>ZipEntryBase</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>NewName</maml:name>
          <maml:description>
            <maml:para>Specifies the new name of the zip entry. Enter only a name, not a path and name.</maml:para>
            <maml:para>&gt; [!TIP] &gt; Delay-bind scriptblock (https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_script_blocks?view=powershell-7.4#using-delay-bind-script-blocks-with-parameters) is supported for this parameter. See [Example 2](#example-2-rename-all-entries-with-ext-extension-using-a-delay-bind-scriptblock).</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>The cmdlet outputs the `ZipEntryFile` and `ZipEntryDirectory` instances representing the renamed entries when this switch is used.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
          <maml:name>Confirm</maml:name>
          <maml:description>
            <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
          <maml:name>WhatIf</maml:name>
          <maml:description>
            <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>NewName</maml:name>
        <maml:description>
          <maml:para>Specifies the new name of the zip entry. Enter only a name, not a path and name.</maml:para>
          <maml:para>&gt; [!TIP] &gt; Delay-bind scriptblock (https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_script_blocks?view=powershell-7.4#using-delay-bind-script-blocks-with-parameters) is supported for this parameter. See [Example 2](#example-2-rename-all-entries-with-ext-extension-using-a-delay-bind-scriptblock).</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>The cmdlet outputs the `ZipEntryFile` and `ZipEntryDirectory` instances representing the renamed entries when this switch is used.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="0" aliases="none">
        <maml:name>ZipEntry</maml:name>
        <maml:description>
          <maml:para>The zip entries to rename.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter takes input from pipeline, however binding by name is also possible. &gt; - The input are instances inheriting from `ZipEntryBase` (`ZipEntryFile` or `ZipEntryDirectory`) outputted by `Get-ZipEntry` (Get-ZipEntry.md) and [`New-ZipEntry`](New-ZipEntry.md)cmdlets.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ZipEntryBase</command:parameterValue>
        <dev:type>
          <maml:name>ZipEntryBase</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="cf">
        <maml:name>Confirm</maml:name>
        <maml:description>
          <maml:para>Prompts you for confirmation before running the cmdlet.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="wi">
        <maml:name>WhatIf</maml:name>
        <maml:description>
          <maml:para>Shows what would happen if the cmdlet runs. The cmdlet is not run.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>PSCompression.Abstractions.ZipEntryBase</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe instances of `ZipEntryFile` or `ZipEntryDirectory` to this cmdlet. These instances are produced by `Get-ZipEntry` (Get-ZipEntry.md) and [`New-ZipEntry`](New-ZipEntry.md)cmdlets.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>By default, this cmdlet produces no output.</maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>PSCompression.ZipEntryFile</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>PSCompression.ZipEntryDirectory</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>This cmdlet outputs the renamed entries when the `-PassThru` switch is used.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert />
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------- Example 1: Rename a Zip File Entry --------------</maml:title>
        <dev:code>PS ..pwsh\&gt; Get-ZipEntry .\myZip.zip -Type Archive -Include relativePath/to/myEntryToRename.ext |
    Rename-ZipEntry -NewName myNewName.ext</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>Example 2: Rename all entries with `.ext` extension using a delay-bind scriptblock</maml:title>
        <dev:code>PS ..pwsh\&gt; Get-ZipEntry .\myZip.zip -Type Archive -Include *.ext |
    Rename-ZipEntry -NewName { $_.BaseName + 'myNewName' + $_.Extension }</dev:code>
        <dev:remarks>
          <maml:para>Delay-bind scriptblocks (https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_script_blocks?view=powershell-7.4#using-delay-bind-script-blocks-with-parameters)is supported for renaming multiple entries.</maml:para>
          <maml:para>&gt; [!TIP] &gt; In the context of the delay-bind scriptblock , `$_` (`$PSItem`) (https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_psitem?view=powershell-7.4)represents the current pipeline item, in this case, an instance of `PSCompression.ZipEntryFile` or `PSCompression.ZipEntryDirectory`.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>----------- Example 3: Rename a Zip Directory Entry -----------</maml:title>
        <dev:code>PS ..\pwsh&gt; Get-ZipEntry .\PSCompression.zip -Include PSCompression/docs/en-US/*
 
   Directory: /PSCompression/docs/en-US/
 
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Directory 2/22/2024 1:19 PM en-US
Archive 2/22/2024 1:19 PM 2.08 KB 6.98 KB Compress-GzipArchive.md
Archive 2/22/2024 1:19 PM 2.74 KB 8.60 KB Compress-ZipArchive.md
Archive 2/22/2024 1:19 PM 1.08 KB 2.67 KB ConvertFrom-GzipString.md
Archive 2/22/2024 1:19 PM 1.67 KB 4.63 KB ConvertTo-GzipString.md
Archive 2/22/2024 1:19 PM 1.74 KB 6.28 KB Expand-GzipArchive.md
Archive 2/22/2024 1:19 PM 1.23 KB 4.07 KB Expand-ZipEntry.md
Archive 2/22/2024 1:19 PM 1.53 KB 6.38 KB Get-ZipEntry.md
Archive 2/22/2024 1:19 PM 1.67 KB 5.06 KB Get-ZipEntryContent.md
Archive 2/22/2024 1:19 PM 2.20 KB 7.35 KB New-ZipEntry.md
Archive 2/22/2024 1:19 PM 961.00 B 2.62 KB PSCompression.md
Archive 2/22/2024 1:19 PM 1.14 KB 2.95 KB Remove-ZipEntry.md
Archive 2/22/2024 1:19 PM 741.00 B 2.16 KB Rename-ZipEntry.md
Archive 2/22/2024 1:19 PM 1.55 KB 5.35 KB Set-ZipEntryContent.md
 
PS ..\pwsh&gt; Get-ZipEntry .\PSCompression.zip -Include PSCompression/docs/en-US/ | Rename-ZipEntry -NewName 'en-US123'
PS ..\pwsh&gt; Get-ZipEntry .\PSCompression.zip -Include PSCompression/docs/en-US123/*
 
   Directory: /PSCompression/docs/en-US123/
 
Type LastWriteTime CompressedSize Size Name
---- ------------- -------------- ---- ----
Directory 2/25/2024 12:41 PM en-US123
Archive 2/25/2024 12:41 PM 2.08 KB 6.98 KB Compress-GzipArchive.md
Archive 2/25/2024 12:41 PM 2.74 KB 8.60 KB Compress-ZipArchive.md
Archive 2/25/2024 12:41 PM 1.08 KB 2.67 KB ConvertFrom-GzipString.md
Archive 2/25/2024 12:41 PM 1.67 KB 4.63 KB ConvertTo-GzipString.md
Archive 2/25/2024 12:41 PM 1.74 KB 6.28 KB Expand-GzipArchive.md
Archive 2/25/2024 12:41 PM 1.23 KB 4.07 KB Expand-ZipEntry.md
Archive 2/25/2024 12:41 PM 1.53 KB 6.38 KB Get-ZipEntry.md
Archive 2/25/2024 12:41 PM 1.67 KB 5.06 KB Get-ZipEntryContent.md
Archive 2/25/2024 12:41 PM 2.20 KB 7.35 KB New-ZipEntry.md
Archive 2/25/2024 12:41 PM 961.00 B 2.62 KB PSCompression.md
Archive 2/25/2024 12:41 PM 1.14 KB 2.95 KB Remove-ZipEntry.md
Archive 2/25/2024 12:41 PM 741.00 B 2.16 KB Rename-ZipEntry.md
Archive 2/25/2024 12:41 PM 1.55 KB 5.35 KB Set-ZipEntryContent.md</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-- Example 4: Prompt for confirmation before renaming entries --</maml:title>
        <dev:code>PS ..pwsh\&gt; Get-ZipEntry .\PSCompression.zip -Include PSCompression/docs/en-US123/ | Rename-ZipEntry -NewName 'Test' -Confirm
 
Confirm
Are you sure you want to perform this action?
Performing the operation "Rename" on target "PSCompression/docs/en-US123/".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-ZipEntryContent</command:name>
      <command:verb>Set</command:verb>
      <command:noun>ZipEntryContent</command:noun>
      <maml:description>
        <maml:para>Sets or appends content to an existing zip entry.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The `Set-ZipEntryContent` cmdlet can write or append content to a Zip Archive Entry. By default, this cmdlet replaces the existing content of a Zip Archive Entry, if you need to append content you can use the `-Append` switch. This cmdlet also supports writing or appending raw bytes while using the `-AsByteStream` switch. To send content to `Set-ZipEntryContent` you can use the `-Value` parameter on the command line or send content through the pipeline.</maml:para>
      <maml:para>If you need to create a new Zip Archive Entry you can use the `New-ZipEntry` cmdlet (./New-ZipEntry.md).</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-ZipEntryContent</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>SourceEntry</maml:name>
          <maml:description>
            <maml:para>Specifies the zip archive entry that receives the content. `ZipEntryFile` instances can be obtained using `Get-ZipEntry` or `New-ZipEntry` cmdlets.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ZipEntryFile</command:parameterValue>
          <dev:type>
            <maml:name>ZipEntryFile</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Append</maml:name>
          <maml:description>
            <maml:para>Appends the content to the zip entry instead of overwriting it.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AsByteStream</maml:name>
          <maml:description>
            <maml:para>Specifies that the content should be written as a stream of bytes.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>BufferSize</maml:name>
          <maml:description>
            <maml:para>For efficiency purposes this cmdlet buffers bytes before writing them to the Zip Archive Entry. This parameter determines how many bytes are buffered before being written to the stream.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter is applicable only when `-AsByteStream` is used. &gt; The buffer default value is 128 KiB.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>128000</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Outputs the object representing the updated zip archive entry. By default, this cmdlet does not generate any output.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Value</maml:name>
          <maml:description>
            <maml:para>Specifies the new content for the zip entry.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Object[]</command:parameterValue>
          <dev:type>
            <maml:name>Object[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Set-ZipEntryContent</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>SourceEntry</maml:name>
          <maml:description>
            <maml:para>Specifies the zip archive entry that receives the content. `ZipEntryFile` instances can be obtained using `Get-ZipEntry` or `New-ZipEntry` cmdlets.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">ZipEntryFile</command:parameterValue>
          <dev:type>
            <maml:name>ZipEntryFile</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Append</maml:name>
          <maml:description>
            <maml:para>Appends the content to the zip entry instead of overwriting it.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Encoding</maml:name>
          <maml:description>
            <maml:para>The character encoding used to read the entry content.</maml:para>
            <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter is applicable only when `-AsByteStream` is not used. &gt; - The default encoding is `utf8NoBOM` .</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
          <dev:type>
            <maml:name>Encoding</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>utf8NoBOM</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Outputs the object representing the updated zip archive entry. By default, this cmdlet does not generate any output.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>Value</maml:name>
          <maml:description>
            <maml:para>Specifies the new content for the zip entry.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Object[]</command:parameterValue>
          <dev:type>
            <maml:name>Object[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Append</maml:name>
        <maml:description>
          <maml:para>Appends the content to the zip entry instead of overwriting it.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AsByteStream</maml:name>
        <maml:description>
          <maml:para>Specifies that the content should be written as a stream of bytes.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>BufferSize</maml:name>
        <maml:description>
          <maml:para>For efficiency purposes this cmdlet buffers bytes before writing them to the Zip Archive Entry. This parameter determines how many bytes are buffered before being written to the stream.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter is applicable only when `-AsByteStream` is used. &gt; The buffer default value is 128 KiB.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>128000</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Encoding</maml:name>
        <maml:description>
          <maml:para>The character encoding used to read the entry content.</maml:para>
          <maml:para>&gt; [!NOTE] &gt; &gt; - This parameter is applicable only when `-AsByteStream` is not used. &gt; - The default encoding is `utf8NoBOM` .</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Encoding</command:parameterValue>
        <dev:type>
          <maml:name>Encoding</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>utf8NoBOM</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Outputs the object representing the updated zip archive entry. By default, this cmdlet does not generate any output.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>SourceEntry</maml:name>
        <maml:description>
          <maml:para>Specifies the zip archive entry that receives the content. `ZipEntryFile` instances can be obtained using `Get-ZipEntry` or `New-ZipEntry` cmdlets.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">ZipEntryFile</command:parameterValue>
        <dev:type>
          <maml:name>ZipEntryFile</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>Value</maml:name>
        <maml:description>
          <maml:para>Specifies the new content for the zip entry.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Object[]</command:parameterValue>
        <dev:type>
          <maml:name>Object[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>You can pipe strings or bytes to this cmdlet.</maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>This cmdlet produces no output by default .</maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>PSCompression.ZipEntryFile</maml:name>
        </dev:type>
        <maml:description>
          <maml:para>This cmdlet outputs the updated entry when the `-PassThru` switch is used.</maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert />
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>----- Example 1: Write new content to a Zip Archive Entry -----</maml:title>
        <dev:code>PS ..pwsh\&gt; $entry = New-ZipEntry .\test.zip -EntryPath test\helloworld.txt
PS ..pwsh\&gt; 'hello', 'world', '!' | Set-ZipEntryContent $entry
PS ..pwsh\&gt; $entry | Get-ZipEntryContent
hello
world
!</dev:code>
        <dev:remarks>
          <maml:para>You can send content through the pipeline or using the `-Value` parameter as shown in the next example.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>------- Example 2: Append content to a Zip Archive Entry -------</maml:title>
        <dev:code>PS ..pwsh\&gt; Set-ZipEntryContent $entry -Value 'hello', 'world', '!' -Append
PS ..pwsh\&gt; $entry | Get-ZipEntryContent
hello
world
!
hello
world
!</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>------ Example 3: Write raw bytes to a Zip Archive Entry ------</maml:title>
        <dev:code>PS ..pwsh\&gt; $entry = Get-ZipEntry .\test.zip -Include test/helloworld.txt
PS ..pwsh\&gt; $bytes = [System.Text.Encoding]::UTF8.GetBytes('hello world!')
PS ..pwsh\&gt; $bytes | Set-ZipEntryContent $entry -AsByteStream
PS ..pwsh\&gt; $entry | Get-ZipEntryContent
hello world!</dev:code>
        <dev:remarks>
          <maml:para>The cmdlet supports writing and appending raw bytes while using the `-AsByteStream` switch.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>------ Example 4: Append raw bytes to a Zip Archive Entry ------</maml:title>
        <dev:code>PS ..pwsh\&gt; $bytes | Set-ZipEntryContent $entry -AsByteStream -Append
PS ..pwsh\&gt; $entry | Get-ZipEntryContent
hello world!hello world!</dev:code>
        <dev:remarks>
          <maml:para>Using the same byte array in the previous example, we can append bytes to the entry stream.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Online Version:</maml:linkText>
        <maml:uri>https://github.com/santisq/PSCompression</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
</helpItems>