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