2017-10-19 3 views
0

J'essaie de comparer deux objets dans PowerShell. Je voudrais comparer sur une propriété de l'objet et conserver toutes les propriétés de l'objet original. Je les objets suivants:Dans PowerShell, comment comparer des objets ayant des propriétés différentes et conserver les propriétés d'origine de l'objet de référence?

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

UserID 
aaa 
aab 
aac 

Je voudrais que ma sortie soit:

UserID ID 
zaa 211 
zab 212 

J'ai essayé d'utiliser Compare-Object sans chance. Il semble que je perds la colonne ID dans la comparaison ou compare la ligne entière à la place de la propriété UserID. Comment puis-je accomplir cette comparaison?

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

Répondre

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 
1

présumant que $DirectoryItemsToSync est la liste supérieure avec à la fois UserId et ID.

Utilisez le Where-Object Cmdlet:

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