SPUser等效运算符

时间:2015-01-06 16:22:06

标签: powershell operators spuser

是否存在运算符,如果是,请确定PowerShell中两个SPUser对象之间的等效性?

我的实例正在循环浏览网站列表以取代"域名/约翰史密斯"与"域/ Jane Doe"在某个网站属性。如果它与SPUser"域/ John Smith"相同,它会将SPUser当前放在该属性中。然后用SPUser"域/ Jane Doe"替换该属性。

在这个特定的实例中,只需比较UserLogin或DisplayName属性就足够了,但我正在寻找一种更复杂的方法来确定两个用户之间的等效性。

1 个答案:

答案 0 :(得分:0)

似乎是一个有点迟到的答案,但为了帮助任何人在这个问题上遇到困难,我或许可以提出一些想法,我必须做些什么才能找到用户并比较某些属性。 我已将此示例用于与SharePoint相关的查询,但您显然可以将确切原则应用于其他区域。

我为我的SPWeb获取了SiteUsers的集合,然后,在foreach中我遍历所有用户并执行检查:如果我的用户的电子邮件地址存在于SPUsers Collection中,则将该电子邮件地址添加到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()
}