Vejo muitas perguntas e respostas sobre como converter uma matriz de bytes em string, mas meu caso é bem diferente e não consigo encontrar uma maneira de fazer o que preciso.
Eu gero um conjunto de resultados de uma determinada API e o coloco em uma variável $jobandtasklist
Em seguida, escolho as propriedades que desejo e exporto para um arquivo csv
$jobandtasklist | select Group, Name, Active, Taskname, ExitCodeResult, DatelastExecution, Description, TaskStdOutput, TaskErrOutput | Export-Csv c:\temp\ErrorReport.csv
Em seguida, importo o arquivo csv
$csvresults = Import-Csv -Path 'C:\temp\ErrorReport.csv'
TaskStdOutput e TaskErrOutput têm valores semelhantes aos abaixo
69 120 99 101 112 116 105 111 110 32 105 110 32 84 97 115 107 58 32 78 111 32 102 105 108 101 40 115 41 32 102 111 117 110 100
Quero que esses valores de bytes sejam convertidos em seus equivalentes em string (gostaria que a saída fosse legível aos olhos humanos, basicamente)
Eu tento o seguinte
foreach ($result in $csvresults) {
If ($result.TaskStdOutput -gt 1 ) {
$result.TaskstdOutput = [System.Text.Encoding]::UTF8.GetString($result.TaskStdOutput)
}
else {
if ($result.TaskErroutput -gt 1) {
$result.TaskErrOutput = [System.Text.Encoding]::UTF8.GetString($result.TaskErrOutput)
} } }
mas gera o erro abaixo
Não é possível converter o argumento "bytes", com o valor: "92 92 80 65 82 70 79 82 65 80 48 48 50 92 97 112 120 36 92 120 109 108 92 114 101 113 117 101 115 116 46 120 109 108 32 62 32 92 92 80 65 82 70 79 82 65 80 48 48 50 92 97 112 120 36 92 120 109 108 92 114 101 113 117 101 115 116 50 48 49 55 48 54 48 57 49 54 49 55 46 120 109 108", para "GetString" digitar "System.Byte[]": "Não é possível converter o valor "92 92 80 65 82 70 79 82 65 80 48 48 50 92 97 112 120 36 92 120 109 108 92 114 101 113 117 101 115 116 46 120 109 108 32 62 32 92 92 80 65 82 70 79 82 65 80 48 48 50 92 97 112 120 36 92 120 109 108 92 114 101 113 117 101 115 116 50 48 49 55 48 54 48 57 49 54 49 55 46 120 109 108" para digitar "System.Byte[]". Erro: "Não é possível converter o valor "92 92 80 65 82 70 79 82 65 80 48 48 50 92 97 112 120 36 92 120 109 108 92 114 101 113 117 101 115 116 46 120 109 108 32 62 32 92 92 80 65 82 70 79 82 65 80 48 48 50 92 97 112 120 36 92 120 109 108 92 114 101 113 117 101 115 116 50 48 49 55 48 54 48 57 49 54 49 55 46 120 109 108" para digitar "System.Byte". Erro: "A sequência de caracteres de entrada não estava no formato correto."
O que estou fazendo errado aqui?
Por exemplo, usar [System.Text.Encoding]::UTF8.GetString($jobandtasklist.TaskErrOutput)
retornará todos os valores de bytes como string, como eu quero, mas isso é inútil para mim, pois preciso que eles sejam convertidos por resultado para que tenham algum significado (sejam associados ao trabalho específico, por exemplo) em vez de todos os TaskStdOutput e TaskErrOutput combinados em um único blob gigante.