1

是否有一个运算符,如果有的话,可以确定 PowerShell 中两个 SPUser 对象之间的等价性吗?

我的实例正在遍历站点列表,以在某个站点属性中将“域/John Smith”替换为“域/Jane Doe”。它正在拉取当前在该属性中的 SPUser,如果它与 SPUser“域/John Smith”相同,则该属性将被替换为 SPUser“域/Jane Doe”。

在这个特定实例中,仅比较 UserLogin 或 DisplayName 属性很容易,但我正在寻找一种更复杂的方法来确定两个用户之间的等效性。

4

1 回答 1

0

似乎是一个有点晚的答案,但为了帮助任何偶然发现这个问题的人,我也许可以就我必须做些什么来寻找用户并比较某些属性提供一些想法。我已将此示例用于与 SharePoint 相关的查询,但您显然可以将确切的原则应用于其他领域。

我为我的 SPWeb 获取了一组 SiteUser,然后在 foreach 中遍历所有用户并执行检查:如果我的用户的电子邮件地址存在于 SPUsers 集合中,则将该电子邮件地址添加到 SharePoint 列表中。以下是我将如何进行比较:

$item["Line Supervisor"] = $spweb.SiteUsers | ? { $_.Email -eq ($csvrow.LineManagerMail + "@domain.com")}

虽然这不能直接回答您的问题,但它可能会让您了解如何在 PowerShell 中使用 lambda 表达式来帮助您对数据执行快速检查,而不仅仅是对用户进行检查。如果你需要,我可以想出一些其他类似的例子。

下面是我最近在这个例子中使用的一个小片段:

从 CSV 文件将新用户添加到列表中

foreach ($csvrow in $icsv)
{
    $rowCellNumber = $csvrow.CellNumber;
    Write-Host($rowCellNumber);
    $item = $users | ? {$_["Cell Number"] -eq $rowCellNumber}

    If($item -eq $null)
    {
        $item = $linstance.AddItem();
        Write-Host('New User Found - Creating ' + $rowCellNumber + '...');
        $newitems = $newitems + 1;   #this is only a flag to count new items
    }
    Else
    {
        Write-Host('Existing User Found - Updating ' + $rowCellNumber + '...');
        $updateditems = $updateditems + 1;   #this is only a flag to count updated items
    }
#set spitem field values
    $item["Title"] = $csvrow.FullName
    $item["Line Manager"] = $spweb.SiteUsers | ? { $_.Email -eq ($csvrow.LineManagerMail + "@domain.com")}
    
    $item.Update()
}
于 2015-02-03T08:16:17.907 回答