2

我正在使用 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 Functions 的文档非常少。

4

2 回答 2

5

Azure Functions 目录的路径是

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

在最新的 Azure Functions 版本(0.3 版)中,我们支持代表您加载 DLL。您将需要创建一个名为modules的文件夹并将 DLL 上传到该文件夹​​中。事实上,您现在可以将脚本 (.psm1)、二进制 (.dll) 和清单 (.psd1)模块上传到模块文件夹中,它们将在执行脚本之前自动加载。

让我们使用示例MyMathLib程序集作为参考。

假设您有一个名为 RunSimplePowerShell 的函数,并将名为MyMathLib.dll自定义库上传到文件夹中,如下所示,

D:\home\site\wwwroot\RunSimplePowerShell\modules\MyMathLib.dll

然后,名为 run.ps1 的 PowerShell 脚本位于

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")
于 2016-07-01T18:25:27.353 回答
1

想通了,有点。

要查找文件的绝对路径,可以通过访问 Azure Functions 中的控制台来完成。要进入控制台需要点击一下。从 Azure 函数内部:

功能应用设置 -> 高级设置 -> 转到应用服务设置 -> 工具 -> 控制台

您将在命令提示符中看到目录名称。然后你可以使用:

[Reflection.Assembly]::LoadFile("<directory>\MyLibraryNameHere.dll")

拉入您的组件。

于 2016-06-30T13:00:22.447 回答