在PowerShell中,是否有运算符来确定两个SPUser对象之间的等价性?如果有,又是什么?
我的实例循环访问站点列表,将某个站点属性中的"domain/John Smith“替换为"domain/Jane Doe”。它拉取该属性中当前的域,如果它与SPUser“域/John Smith”相同,则该属性将被SPUser“域/无名氏”替换。
在本例中,只比较UserLogin或DisplayName属性很容易,但我正在寻找一种更复杂的方法来确定两个用户之间的等价性。
发布于 2015-02-03 16:16:18
这似乎是一个有点晚的答案,但为了帮助遇到这个问题的人,我也许可以给出一些我必须做的关于寻找用户和比较某些属性的想法。我在与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()
}https://stackoverflow.com/questions/27802785
复制相似问题