2016-11-10 2 views
0

Я знаю, что я могу сравнить значения Объекты двух PowerShell:Сравните свойства двух PsCustomObjects

PS> $A = [PsCustomObject]@{"A"=1; "B"=$True; "C"=$False} 
PS> $B = [PsCustomObject]@{"A"=1; "B"=$False; "C"=$False} 
PS> Compare-Object $A $B -Property A, B, C 

A B  C SideIndicator 
- -  - ------------- 
1 False False => 
1 True False <= 

Однако, мне нужно сравнить с существования свойства двух объектов PowerShell.

Эти объекты будут рассматриваться те же:

PS> $A = [PsCustomObject]@{"A"=1; "B"=$True; "C"=$False} 
PS> $B = [PsCustomObject]@{"A"=1; "B"=$False; "C"=$True} 
PS> Compare-Foo $A $B 
True 

Эти объекты будут считаться не то же самое:

PS> $A = [PsCustomObject]@{"A"=1; "C"=$False} 
PS> $B = [PsCustomObject]@{"A"=1; "B"=$False; "C"=$False} 
PS> Compare-Foo $A $B 
False 

Есть хороший способ сделать это?

+3

'@ (Compare-Object @ ($ A.PSObject.Properties) @ ($ B!. PSObject.Properties) -Property Name) .Length' – PetSerAl

+0

@PetSerAl, который сработал. – craig

ответ

1

Я могу придумать несколько способов сделать это, самый простой, но на самом деле не испытываться:

$A.Keys | ForEach-Object { $C = $B["$_"]; if ($C -eq "") {return $false;} } 
Смежные вопросы