如何使用 PowerShell 在 Azure Function 中加载文件

How to load a file in Azure Function using PowerShell

我有一个小函数,它接受一组美国电话区号和 returns 一组与他们所在州配对的区号。

各州的区号 "master list" 在我的函数中是一个 long 变量。我想改为将其放入 CSV 文件中。

我是 Azure Functions 的初学者,但即使文件位于根文件夹中,Get-Content .\filename.csv 也不起作用。

您的 Azure 函数目录的路径是

D:\home\site\wwwroot\<YourFunctionName>

要加载 CSV 文件,请在您的 PowerShell 脚本中使用以下命令,

Get-Content D:\home\site\wwwroot\<YourFunctionName>\filename.csv

这是加载地区代码到州映射文件的示例输出,

2017-03-11T09:21:57.185 Function started (Id=9c93e8cf-4cf0-487e-b86e-02e57b41b8de)
2017-03-11T09:21:58.357 Area code,State,State code
2017-03-11T09:21:58.357 201,New Jersey,NJ
2017-03-11T09:21:58.357 202,"Washington,DC",DC
2017-03-11T09:21:58.357 203,Connecticut,CT
2017-03-11T09:21:58.357 205,Alabama,AL
....<more logging>....


其他工具和资源:

我。 Kudu 控制台 - 您可以使用 Kudu 控制台来浏览 Function App 的目录结构。我有时会使用 Kudu 控制台在 Azure Functions 运行 时间之外测试 run.ps1 脚本。

要使用 Kudu 控制台,请执行以下步骤:

  1. 访问函数应用程序的 Azure Functions 门户。
  2. 单击函数应用程序设置 -> 转到 Kudu -> 调试控制台 -> PowerShell
  3. 导航到您的函数目录和运行您的脚本,如下面的快照所示。


二。带上你自己的模块 - 你也可以加载你自己的自定义模块并在你的 run.ps1 脚本中使用它们。 .

提供了有关如何实现此目的的详细信息

引用绝对路径从来都不是一个好主意,因为情况可能会发生变化。要使用始终指向正确路径的变量,您可以使用:

$EXECUTION_CONTEXT_FUNCTIONDIRECTORY 这将 return 您的 Azure Functions 从中运行的当前文件夹。

要在您手头的问题中使用它:

Get-Content -Path "$EXECUTION_CONTEXT_FUNCTIONDIRECTORY\filename.csv"

相关文档: https://github.com/Azure/azure-functions-host/wiki/Retrieving-information-about-the-currently-running-function#powershell-php-python-bash-batch-and-other-scripting-languages

我 运行 在应用服务控制台中搜索:

D:\home\site\wwwroot>set | findstr /c:wwwroot
AZURE_JETTY93_CMDLINE=-Djava.net.preferIPv4Stack=true -Djetty.port=%HTTP_PLATFORM_PORT% -Djetty.base="D:\Program Files (x86)\jetty-distribution-9.3.25.v20180904" -Djetty.webapps="d:\home\site\wwwroot\webapps"  -jar "D:\Program Files (x86)\jetty-distribution-9.3.25.v20180904\start.jar" etc\jetty-logging.xml

AZURE_JETTY9_CMDLINE=-Djava.net.preferIPv4Stack=true -Djetty.port=%HTTP_PLATFORM_PORT% -Djetty.base="D:\Program Files (x86)\jetty-distribution-9.1.0.v20131115" -Djetty.webapps="d:\home\site\wwwroot\webapps"  -jar "D:\Program Files (x86)\jetty-distribution-9.1.0.v20131115\start.jar" etc\jetty-logging.xml

DEPLOYMENT_TARGET=D:\home\site\wwwroot

WEBROOT_PATH=D:\home\site\wwwroot

您似乎也可以使用 DEPLOYMENT_TARGET 或 WEBROOT_PATH 环境变量作为资源文件的基本路径。