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()
}