public/ConvertFrom-Base64Compressed.ps1

function ConvertFrom-Base64Compressed {
    <#
    .SYNOPSIS
    Convert string from Base64 compressed to ASCII
    .DESCRIPTION
    .PARAMETER String
    Required. Base64 compressed text string to convert.
    .EXAMPLE
    $x = "this is a test string" | ConvertTo-Base64Compressed
    returns "H4sIAAAAAAAEACvJyCxWAKJEhZLU4hKF4pKizLx0ALXWhvwVAAAA"
    $x | ConvertFrom-Base64Compressed
    returns "this is a test string"
    .LINK
    https://github.com/Skatterbrainz/ds-utils/blob/master/docs/ConvertFrom-Base64Compressed.md
    #>

    [CmdletBinding()]
    param (
        [parameter(Mandatory=$true,ValueFromPipeline=$true)][ValidateNotNullOrEmpty()]$EncodedText
    )
    begin {}
    process {
        $data = [System.Convert]::FromBase64String($EncodedText)
        $compressedStream = [System.IO.MemoryStream]::new($data)
        $zipStream = [System.IO.Compression.GZipStream]::new($compressedStream, [System.IO.Compression.CompressionMode]::Decompress)
        $resultStream = [System.IO.MemoryStream]::new()
        $buffer = [System.Byte[]]::CreateInstance([System.Byte],4096)
        while (($read = $zipStream.Read($buffer, 0, $buffer.Length)) -gt 0){
            $resultStream.Write($buffer, 0, $read)
        }
        $decompressed = $resultStream.ToArray()
        [System.Text.Encoding]::UTF8.GetString($decompressed, 0, $decompressed.Length)
    }
    end {}
}