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

时间:2017-03-10 17:02:59

标签: powershell azure azure-functions

我有一个小函数,它接受一系列美国电话区号并返回一组区域代码与它们所处的状态配对。

区域代码到状态的“主列表”是我函数中的一个长变量。我想把它放在CSV文件中。

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

3 个答案:

答案 0 :(得分:1)

Azure功能目录的路径是

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

要加载CSV文件,请在PowerShell脚本中使用以下内容

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

这是用于加载areacode-to-state映射文件的示例输出

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控制台浏览功能应用程序的目录结构。我有时使用Kudu控制台来测试Azure Functions运行时之外的run.ps1脚本。

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

  1. 访问功能应用程序的Azure功能门户。
  2. 点击功能应用设置 - &gt;去Kudu - &gt;调试控制台 - &gt; PowerShell的即可。
  3. 导航到您的Function目录并运行您的脚本,如下面的快照所示。

    enter image description here

  4. II。带上您自己的模块 - 您也可以加载自己的自定义模块并在run.ps1脚本中使用它们。有关如何实现此目的的详细信息,请提供here

答案 1 :(得分:1)

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

$EXECUTION_CONTEXT_FUNCTIONDIRECTORY,它将返回运行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

答案 2 :(得分:0)

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

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环境变量作为资源文件的基本路径。