SPUser оператор эквивалентности

Существует ли оператор, и если да, то для определения эквивалентности между двумя объектами SPUser в PowerShell?

Мой экземпляр перебирает список сайтов для замены "домен / Джон Смит" на "домен / Джейн Доу" в определенном свойстве сайта. Он вытягивает SPUser в настоящее время в этом свойстве, если он совпадает с SPUser "домен / Джон Смит", то свойство заменяется SPUser "домен / Джейн Доу".

В этом конкретном случае достаточно просто сравнить свойство UserLogin или DisplayName, но я ищу более сложный способ определения эквивалентности между двумя пользователями.

1 ответ

Кажется, что это несколько запоздалый ответ, но ради того, чтобы помочь кому-нибудь наткнуться на эту проблему, я, возможно, могу дать некоторые идеи о том, что мне нужно было сделать, чтобы найти пользователя и сравнить определенные свойства. Я использовал этот пример для запросов, связанных с SharePoint, но вы, очевидно, можете применить точный принцип к другим областям.

Я получаю коллекцию SiteUsers для своего SPWeb, затем на каждом шаге перебираю всех пользователей и проверяю: если адрес электронной почты моего пользователя существует в коллекции SPUsers, добавьте этот адрес электронной почты в список SharePoint. Вот как я бы сделал свое сравнение:

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

Хотя это не дает прямого ответа на ваш вопрос, оно может дать вам представление о том, как использовать лямбда-выражения в PowerShell для быстрой проверки ваших данных, а не только для пользователей. Я могу придумать несколько других подобных примеров, если вам нужно.

Ниже приведен небольшой фрагмент, который я недавно использовал с этим примером:

ДОБАВИТЬ НОВЫХ ПОЛЬЗОВАТЕЛЕЙ В СПИСОК ИЗ ФАЙЛА 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()
}
Другие вопросы по тегам