【发布时间】:2021-04-23 05:24:41
【问题描述】:
我在 PowerShell 脚本中有两个数组
Array1 - 每个对象用分号分隔。数组中的对象值具有用管道分隔的电子邮件和名称。该数组是使用 SharePoint 列表中的 PnP PowerShell 从搜索 API 检索的。
$searchAPIData = @("Bill@myDomain.com|Bill";"Paul@myDomain.com|Paul";"Mike@myDomain.com|mike";"Mark@myDomain.com|Mark";"Sam@myDomain.com|Sam")
Array 2 - 从独立列表中获取数据。每个对象用分号分隔。但是数组中的Object值有Email和User ID。
$existingDataInList = @("Bill@myDomain.com|3";"Paul@myDomain.com|2";"John@myDomain.com|5";"Mark@myDomain.com|4")
背景 - 对于每封电子邮件,我使用 yammer API 来获取用户 ID。因此,如果我过滤特定项目,而不是进行多个 API 调用,则可以减少 API 调用。我根据电子邮件进行比较。如果两个数组中的邮件相同,那么我不需要调用 API/ 或执行任何操作。
如果两个数组中的电子邮件不同,那么我需要将数据更新回 SharePoint 列表,仅针对存在于 Array1 而不是在 Array 2 中的项目。以及相反的情况,即存在于 array2 中的项目而不是数组 1 应该被删除。
在上面的例子中,
-- 我需要从 Array1 中过滤/提取 "Mike@myDomain.com|mike" 和 "Sam@myDomain.com|Sam"。所以只进行了 2 次 API 调用。
-- 我需要从 Array2 中删除 "John@myDomain.com|5"。
我尝试使用 Where 、-NotContains $_ 或 -Contains $_ 并没有给我想要的结果。 Where-Object 也一样。
非常感谢任何输入。提前致谢。
【问题讨论】:
标签: arrays powershell