仅比较对象左侧或右侧

compare-object left or right side only

快速提问

是否有更好(即更高效/更简洁)的方法来做到这一点?

compare-object $a $b | ?{$_.SideIndicator -eq '<='}

详情

Compare-Object 提供参数 -excludeDifferent-includeEqual 以允许您修改获得的结果。

没有 -includeLeft-excludeLeft 或类似的选项。

目前要在右侧为空的情况下进行左外连接(即引用对象中不在差异对象中的项目),我需要按照上面的代码手动过滤结果。

我是不是漏掉了什么/有更好的方法吗?

http://ss64.com/ps/compare-object.html

该 cmdlet 没有类似的选项,但是您可以创建一个过滤器(例如在您的配置文件中),然后使用它来过滤结果: 像

filter leftside{
param(
        [Parameter(Position=0, Mandatory=$true,ValueFromPipeline = $true)]
        [ValidateNotNullOrEmpty()]
        [PSCustomObject]
        $obj
    )

    $obj|?{$_.sideindicator -eq '<='}

}

用法

compare-object $a $b | leftside

您还可以添加 -属性 SideIndicator 并为其使用 if 语句。

$Missing = compare-object $Old $new -Property Name,SideIndicator
     ForEach($Grp in $Missing) {
          if($grp.sideindicator -eq "<=") {     
          # Do Something here
          }
     }