在工作流程中使用Connect-PnPOnline

时间:2019-04-29 13:33:19

标签: powershell sharepoint-online

大家早上好, 我从SharePoint组中检索信息时遇到问题。我在工作流中执行此操作,首先获取所有组的列表,然后在foreach-parallel中使用它来列出这些组的成员。

问题是连接似乎无法保持,并且我的查询无法恢复所有组。

下面是一段代码:

workflow GetGroup {
    param(
    [Parameter(Mandatory)]
    [String]$SPOSite,
    [System.Management.Automation.PSCredential]$SPOCreds
    )
    $KeepAlive = Connect-PnPOnline -Url $SPOSite -Credentials $SPOCreds -ReturnConnection 
    $GetGroups = Get-PnPGroup
    ForEach -Parallel -ThrottleLimit 512 ($Group in $GetGroups)
    {
       $GroupName = $Group.LoginName
       $Users = Get-PnPGroupMembers -Identity $groupName -Connection $workFlow:KeepAlive 
    } 
 }
GetGroup -SPOSite "https://xxx.sharepoint.com/sites/xx -SPOCreds (Get-Credential)

预期结果将是在工作流程开始时使用添加到我们的数组中的PSCustomObject对象初始化的数组。该表由三部分组成:组的名称,该组中的人员的名称,人员的电子邮件。

不幸的是,该表仅部分生成,因为这里的工作流程是错误,我对此一无所获: 不可能链接“连接”参数。不能转换类型为“ SharePointPnP.PowerShell.Commands”的值“ SharePointPnP.PowerShell.Commands.Base.SPOnlineConnection”。 Deserialized.SharePointPnPnP.PowerShell.Commands.Base.SPOnlineConnection“

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我在类似的情况下遇到了同样的错误,这 article 帮助了我。工作流正在将 Connection 对象(在您的情况下为 $KeepAlive)转换为反序列化格式,因此其他 cmdlet 不接受它。您只需使用 InlineScript 包装这些 cmdlet,或者使用 PowerShell 脚本运行手册而不是 PowerShell 工作流运行手册。