大家早上好, 我从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“
谢谢您的帮助。
答案 0 :(得分:0)
我在类似的情况下遇到了同样的错误,这 article 帮助了我。工作流正在将 Connection 对象(在您的情况下为 $KeepAlive
)转换为反序列化格式,因此其他 cmdlet 不接受它。您只需使用 InlineScript 包装这些 cmdlet,或者使用 PowerShell 脚本运行手册而不是 PowerShell 工作流运行手册。