2016-11-10 98 views
0

我知道,我可以比較值的 2 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

'@(比較對象@($ A.PSObject.Properties)@($ B! PSObject.Properties) - 屬性名稱).Length' – PetSerAl

+0

@PetSerAl,工作。 – craig

回答

1

我能想到的幾個方法可以做到這一點,最簡單的,但沒有真正測試:

$A.Keys | ForEach-Object { $C = $B["$_"]; if ($C -eq "") {return $false;} }