我正在使用 PowerShell 和 Azure 函数,这两个功能对我来说都是新的,但这是我的任务选择。
我真正想做的是:
Invoke-RestMethod -Method GET -Uri $uri -Headers $headers -Body $body -OutFile $outfile -UseBasicParsing -DisableKeepAlive
暂时将 REST 响应写入 $outfile
,稍后在脚本中我将通过 FTP 将文件上传到其他位置,然后就不再需要它了。
当然,这在本地效果很好。但在 Azure 中,我基本上发现在 $outfile
路径位置找不到该文件。无论如何,它不应该试图在那里找到它,但我只能猜测我实际上没有写入该文件系统的权限。
因此,如果您知道我在这里编写临时文件的方法,那将是首选!
如果不是,函数应用程序会生成一些 blob 存储,并且我有一个 AzureWebJobsStorage
环境变量,其中包含该存储的帐户名、 key 等。所以也许我可以将文件写入那里,然后读回它们。
但是,我在任何地方都找不到任何有关如何在 PowerShell 中执行此操作的文档。关于 AzureWebJobsStorage
变量有很多讨论,但我没有找到任何实际使用它的地方以及如何在 PowerShell 中读写的示例。再说一遍,因为我对这门语言还很陌生。
任何帮助将不胜感激。谢谢!
最佳答案
New-TemporaryFile
cmdlet 返回的位置是可写的,因此您可以执行以下操作:
$tempFile = New-TemporaryFile
Invoke-RestMethod -Method GET -Uri $uri -Headers $headers -Body $body -OutFile $tempFile -UseBasicParsing -DisableKeepAlive
...
Remove-Item $tempFile
请注意,此临时保证仅在同一函数调用的上下文中可用。其他函数调用可能会被分派(dispatch)给其他工作人员,并且该文件将不再可用。
如果您确实想在调用之间共享文件,可以将其存储在 D:\home\data
下,但请注意该位置是在工作进程之间共享的,因此您可能需要处理潜在的并发访问等。您还可以使用 Az.Storage cmdlets 直接访问存储帐户。 AzureWebJobsStorage
变量包含一个可传递到 New-AzStorageContext
的连接字符串,然后您可以将数据存储在 blob 中(您可以在 https://learn.microsoft.com/en-us/powershell/module/az.storage 找到示例) .
关于azure - 如何在 Powershell 中使用 Azure Function 应用程序写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60047717/