Я нашел следующий пост, который помогает ответить на мой первоначальный вопрос: Вывод файла с функцией Azure
Мой run.ps1 теперь выглядит следующим образом:
$request = "hello world"
$filename = "$env:TEMP\zhello.txt"
$request | Out-File $filename
$base64string = [Convert]::ToBase64String([IO.File]::ReadAllBytes($filename))
$response = ConvertTo-JSON @{
Body=$base64string;
Headers=@{
# unfortunately it seems functions does not support 'filename=...'
'Content-Disposition'='attachment';
# you would use application/octet-stream, but because it's converted to JSON you lose binary content
'Content-Type'='text/plain';
};
}
Out-File -Encoding Ascii -FilePath $outputFile -inputObject $response
Файл помещается в мой OneDrive, однако его содержимое просто следующее:
{
"Headers": {
"Content-Type": "text/plain",
"Content-Disposition": "attachment"
},
"Body": "//5oAGUAbABsAG8AIAB3AG8AcgBsAGQADQAKAA=="
}
Теперь я могу взять это "тело" и создать файл из него локально:
$encodedText = "//5oAGUAbABsAG8AIAB3AG8AcgBsAGQADQAKAA=="
$Content = [System.Convert]::FromBase64String($encodedText)
Set-Content -Path $env:temp\my-file.txt -Value $Content -Encoding Byte
Но это противоречит цели функции, я мог бы также запустить все локально, так как мне нужно запустить этот фрагмент "декодирования" локально.Еще при тестировании я обнаружил, что ОСНОВНАЯ причина, по которой я не смог вывести файл раньше, была вызвана тем, что мой function.json использовал значение по умолчанию {file}.Как только я жестко запрограммировал это в «zhello.txt», я получил этот файл в OneDrive с содержимым, указанным в $ response.Тем не менее, мне нужно найти способ динамически указывать имя outputFile (в моем run.ps1).