在PowerShell中,如何比较具有不同属性的对象并保留引用对象

时间:2017-10-19 14:30:08

标签: powershell

我正在尝试比较PowerShell中的两个对象。我想比较对象的一个​​属性并保留原始对象的所有属性。我有以下对象:

UserID ID
aaa    111
aab    112
aac    113
zaa    211
zab    212

UserID
aaa
aab
aac

我希望我的输出为:

UserID ID
zaa    211
zab    212

我尝试使用Compare-Object但没有运气。似乎我在比较中丢失了ID列,或者它比较了整个行而不仅仅是UserID属性。我怎样才能完成这个比较?

$ObjectsToDelete = Compare-Object -ReferenceObject $DirectoryItemsToSync -DifferenceObject $CurrentUserPropertyValues

2 个答案:

答案 0 :(得分:1)

假设$DirectoryItemsToSync是包含UserIdID的上方列表。

使用Where-Object Cmdlet

$DirectoryItemsToSync | Where {($CurrentUserPropertyValues | Select -Expand UserID) -NotContains $_.UserID}

答案 1 :(得分:1)

$A
UserID ID
------ -- 
aaa    111
aab    112
aac    113
zaa    211
zab    212

$B
UserID
------
aaa
aab
aac

$A | where {$B.UserID -notcontains $_.userid}

UserID ID 
------ -- 
zaa    211
zab    212