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