首页 > 解决方案 > 如何在 Powershell 中使用 Azure Function 应用程序编写文件

问题描述

我正在使用 PowerShell 和 Azure 函数,这两个函数对我来说都是新的,但我的任务是使用这些选择。

真正想做的是:

Invoke-RestMethod -Method GET -Uri $uri -Headers $headers -Body $body -OutFile $outfile -UseBasicParsing -DisableKeepAlive

暂时将 RE​​ST 响应写入$outfile脚本,稍后在脚本中我将通过 FTP 将文件上传到其他地方,然后不再需要它。

当然,这在本地效果很好。$outfile但在 Azure 中,我基本上知道在路径位置找不到该文件。无论如何,它不应该试图在那里找到它,但我只能猜测我实际上没有写入该文件系统的权限。

因此,如果您知道我在这里编写临时文件的方法,那将是首选!

如果不是,一些 blob 存储是使用函数应用程序生成的,我有一个环境变量,AzureWebJobsStorage其中包含用于该存储的帐户名、密钥等。所以也许我可以把文件写到那里,然后再读回来。

但是,我在任何地方都找不到任何关于如何在 PowerShell 中执行此操作的文档。关于变量的讨论很多AzureWebJobsStorage,但我没有找到实际使用它的任何地方以及如何在 PowerShell 中读取和写入的示例。再说一次,因为我对这门语言还很陌生。

任何帮助将不胜感激。谢谢!

标签: azurepowershellazure-functions

解决方案


cmdlet返回的位置New-TemporaryFile是可写的,因此您可以这样做:

$tempFile = New-TemporaryFile
Invoke-RestMethod -Method GET -Uri $uri -Headers $headers -Body $body -OutFile $tempFile -UseBasicParsing -DisableKeepAlive
...
Remove-Item $tempFile

请注意,此临时保证仅在同一函数调用的上下文中可用。其他函数调用可能会分派给其他工作人员,并且该文件将不再可用。

如果您确实想在调用之间共享文件,则可以将其存储在 下D:\home\data,但请注意此位置在工作人员之间共享,因此您可能需要处理潜在的并发访问等。您也可以使用直接访问存储帐户Az.Storage cmdlet。该AzureWebJobsStorage变量包含一个可以传递给 的连接字符串,New-AzStorageContext然后您可以将数据存储在一个 blob 中(您可以在https://docs.microsoft.com/en-us/powershell/module/az 找到示例。存储)。


推荐阅读