Hello guys,
i’ve been trying for a long time to compress data to gzip but i just can’t seem to make it work.
This is my Gzip conversion code:
function ConvertTo-GzipData { [cmdletBinding()] param( [parameter(Mandatory = $true, ValueFromPipeline = $false)] [byte[]]$Data ) Process { $output = [System.IO.MemoryStream]::new() $gzipStream = New-Object System.IO.Compression.GzipStream $output, ([IO.Compression.CompressionMode]::Compress) $gzipStream.Write($Data, 0, $Data.Length) $gzipStream.Close() return $output.ToArray() } }
And this is the function that uses the gzip compression funtion.
This function gets a string which goes to $data
function Send-Data { Param( [string]$evidence_type, [string]$data ) $encoding = [System.Text.Encoding]::UTF8 $enc_data = $encoding.GetBytes($data) $gzippedData = ConvertTo-GzipData -Data $enc_data write-host $gzippedData }
i get the following error :
ConvertTo-GzipData : Cannot process argument transformation on parameter 'Data'. Cannot convert the "System.Byte[]" value of type "System.Byte[]" to type "System.Byte". At line:10 char:45 + $gzippedData = ConvertTo-GzipData -Data $enc_data + ~~~~~~~~~ + CategoryInfo : InvalidData: (:) [ConvertTo-GzipData], ParameterBindingArgumentTransformationException + FullyQualifiedErrorId : ParameterArgumentTransformationError,ConvertTo-GzipData