8

快速提问

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

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

细节

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

  • 使用两者都会给你一个内部连接
  • 使用只是-includeEqual给你一个完整的外连接
  • 使用just-excludeDifferent是没有意义的;因为默认情况下相等的项目被排除在外,所以它现在将排除所有内容。

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

目前要做一个左侧为空的左外连接(即参考对象中不在差异对象中的项目),我需要按照上面的代码手动过滤结果。

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

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

4

2 回答 2

3

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

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

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

}

用法

compare-object $a $b | leftside
于 2015-02-05T11:13:16.417 回答
1

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

$Missing = compare-object $Old $new -Property Name,SideIndicator
     ForEach($Grp in $Missing) {
          if($grp.sideindicator -eq "<=") {     
          # Do Something here
          }
     }
于 2018-12-12T20:28:54.590 回答