Functions/Data/Compress-Bytes.ps1
function Compress-Bytes { [CmdletBinding()] Param ( # Byte Array to Compress [Parameter(Mandatory=$True,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)] [byte[]] $byteArray, # Decompression Flag [Parameter(Mandatory=$false)] [switch] $Decompress ) Process { if($Decompress -eq $False) { [System.IO.MemoryStream] $output = [System.IO.MemoryStream]::new() $gzipStream = [System.IO.Compression.GzipStream]::new($output, ([IO.Compression.CompressionMode]::Compress)) $gzipStream.Write( $byteArray, 0, $byteArray.Length ) $gzipStream.Close() $output.Close() $tmp = $output.ToArray() } elseif($Decompress -eq $True) { $input = [System.IO.MemoryStream]::new("",$byteArray) $output = [System.IO.MemoryStream]::new() $gzipStream = [System.IO.Compression.GzipStream]::new($input, ([IO.Compression.CompressionMode]::Decompress)) $gzipStream.CopyTo($output) $gzipStream.Close() $input.Close() [byte[]] $tmp = $output.ToArray() } # Output temporary Byte Array $tmp } } |