快速提问
有更好的(即更有效/更简洁)的方法吗?
compare-object $a $b | ?{$_.SideIndicator -eq '<='}
详细
Compare-Object
提供参数-excludeDifferent
和-includeEqual
,以便您修改所获得的结果。
-includeEqual
为您提供完整的外部联接-excludeDifferent
毫无意义;因为默认情况下会排除相等的项目,因此它现在将排除所有内容。 -includeLeft
,-excludeLeft
或类似内容没有选项。
目前要做右侧为空的左外连接(即参考对象中不在差异对象中的项目)我需要手动过滤结果,按照上面的代码。
我错过了什么/有更好的方法吗?
答案 0 :(得分:3)
对于该cmdlet没有类似的选项,但是您可以创建一个过滤器(例如在您的配置文件中),然后使用它来过滤结果:
之类的东西filter leftside{
param(
[Parameter(Position=0, Mandatory=$true,ValueFromPipeline = $true)]
[ValidateNotNullOrEmpty()]
[PSCustomObject]
$obj
)
$obj|?{$_.sideindicator -eq '<='}
}
用法
compare-object $a $b | leftside
答案 1 :(得分:0)
您还可以添加-property SideIndicator并为其使用if语句。
$Missing = compare-object $Old $new -Property Name,SideIndicator
ForEach($Grp in $Missing) {
if($grp.sideindicator -eq "<=") {
# Do Something here
}
}