PowerShell 中的数组减法

edw*_*win 2 linq powershell

我有一个对象数组:

$people= @()
foreach ($person in $databaseOfGuests)
{
   $people += @{ "FirstName"=$person.FirstName; "LastName"=$person.LastName } 
}
Run Code Online (Sandbox Code Playgroud)

现在我想从 中删除重复项$people,是否可以在 PowerShell 中执行此操作?就像是:

$people = $people | Select -Uniq
Run Code Online (Sandbox Code Playgroud)

我有两个数组$people1and $people2,我需要获取所有在$people1但不在 the 中的人的数组,$people2反之亦然。就像是:

$peopleInPeople1ButNotInPeople2 = $people1.Substruct($people2)
$peopleInPeople2ButNotInPeople1 = $people2.Substruct($people1)
Run Code Online (Sandbox Code Playgroud)

可以在PS中一行完成吗?

Avs*_*lom 6

尝试这个:

$people1 | ? {$_ -notin $people2}
Run Code Online (Sandbox Code Playgroud)

或者您可以按属性过滤,例如名字或姓氏:

$people1 | ? {$_.Firstname -notin $people2.Firstname}
Run Code Online (Sandbox Code Playgroud)
  • -notin运营商可以用PS3及以上,较低的版本,你可以使用-notcontains