我正在使用Azure Functions,特别是PowerShell脚本函数。我想知道如何使用与SharePoint Online联系的脚本。
要针对SharePoint Online运行,我通常会使用“SharePoint Online Management Shell”,它是预装SharePoint Online库的PowerShell版本,以便我可以使用Get-SPOSite等方法。
如何在Azure Function PowerShell脚本中包含此库,以便我可以使用这些功能?我假设我需要在我的脚本顶部加载库,但是如何加载库?
我已将DLL上传到我的函数中并尝试使用:
[System.Reflection.Assembly]::LoadFrom('Microsoft.Online.SharePoint.Client.Tenant.dll')
但这似乎不起作用。我认为我的问题是我不知道上传文件的绝对路径。这是我在左侧窗格中看到的内容:
但我不知道这些文件的路径是什么。
有什么想法吗?使用Azure功能时,文档很渺茫。
答案 0 :(得分:5)
Azure Functions目录的路径是
D:\home\site\wwwroot\<YourFunctionName>
在最新的Azure Functions版本(版本0.3)中,我们支持代表您加载DLL。您需要创建一个名为 modules 的文件夹,然后将DLL上传到该文件夹中。实际上,您现在可以将脚本(.psm1),二进制(.dll)和清单(.psd1)模块上传到 modules 文件夹中,它们将是在执行脚本之前自动加载。
让我们使用示例MyMathLib程序集作为参考。
假设您有一个名为 RunSimplePowerShell 的函数,并已将名为 MyMathLib.dll 的自定义库上传到该文件夹中,如下所示,
D:\home\site\wwwroot\RunSimplePowerShell\modules\MyMathLib.dll
然后,您的PowerShell脚本名为run.ps1,驻留在
中D:\home\site\wwwroot\RunSimplePowerShell\run.ps1
可以写成如下,
[MyMathLib.Methods]::Sum(5, 2)
$calculatorInstance= New-Object MyMathLib.Methods
$calculatorInstance.Product(5,2)
使用Azure Functions 0.3版,您现在可以跳过该行
[Reflection.Assembly]::LoadFile("D:\home\site\wwwroot\RunSimplePowerShell\MyMathLib.dll")
答案 1 :(得分:1)
稍微想出来。
要查找文件的绝对路径,可以通过访问Azure Functions中的控制台来执行此操作。要进入控制台需要点击一下。从Azure功能内部:
功能应用设置 - &gt;高级设置 - &gt;转到App Service 设置 - &gt;工具 - &gt;控制台
您将在命令提示符中看到目录名称。然后您可以使用:
[Reflection.Assembly]::LoadFile("<directory>\MyLibraryNameHere.dll")
拉入你的装配。