比较对象仅左侧或右侧

Joh*_*van 7 powershell diff left-join right-join compareobject

快速问题

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

compare-object $a $b | ?{$_.SideIndicator -eq '<='}
Run Code Online (Sandbox Code Playgroud)

详情

Compare-Object给出参数-excludeDifferent-includeEqual允许您修改得到的结果.

  • 使用两者为您提供内部联接
  • 使用只是-includeEqual给你一个完整的外部联接
  • 使用只是-excludeDifferent毫无意义; 因为默认情况下会排除相等的项目,因此它现在将排除所有内容.

有对没有选项-includeLeft,-excludeLeft或类似的.

目前要做右侧为空的左外连接(即参考对象中不在差异对象中的项目)我需要手动过滤结果,如上面的代码所示.

我错过了什么/有更好的方法吗?

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

Loï*_*HEL 4

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

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

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

}
Run Code Online (Sandbox Code Playgroud)

用法

compare-object $a $b | leftside
Run Code Online (Sandbox Code Playgroud)