Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell SPUser等价算子_Powershell_Operators_Spuser - Fatal编程技术网

Powershell SPUser等价算子

Powershell SPUser等价算子,powershell,operators,spuser,Powershell,Operators,Spuser,在PowerShell中,是否有运算符(如果有)来确定两个SPUser对象之间的等效性 我的实例正在一个站点列表中循环,以在某个站点属性中将domain/John Smith替换为domain/Jane Doe。它正在拉取该属性中当前的SPUser,如果它与SPUser domain/John Smith相同,则该属性将被SPUser domain/Jane Doe替换 在这个特定的例子中,比较UserLogin或DisplayName属性很容易,但我正在寻找一种更复杂的方法来确定两个用户之间的

在PowerShell中,是否有运算符(如果有)来确定两个SPUser对象之间的等效性

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


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

似乎是一个有点晚的答案,但是为了帮助那些在这个问题上遇到困难的人,我也许可以给出一些想法,告诉他们我必须做些什么来找到一个用户并比较某些属性。 我已将此示例用于SharePoint相关的查询,但您显然可以将确切的原则应用于其他领域

我为我的SPWeb获取一个SiteUsers集合,然后在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()
}