1

我知道我可以比较两个 PowerShell 对象的

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

有没有好的方法来做到这一点?

4

1 回答 1

1

我可以想到几种方法来做到这一点,最直接但未经真正测试的方法:

$A.Keys | ForEach-Object { $C = $B["$_"]; if ($C -eq "") {return $false;} }
于 2016-11-10T23:06:21.063 回答