仅比较对象左侧或右侧
compare-object left or right side only
快速提问
是否有更好(即更高效/更简洁)的方法来做到这一点?
compare-object $a $b | ?{$_.SideIndicator -eq '<='}
详情
Compare-Object
提供参数 -excludeDifferent
和 -includeEqual
以允许您修改获得的结果。
- 同时使用两者可以得到内部连接
- 仅使用
-includeEqual
即可获得完整的外部联接
- 仅使用
-excludeDifferent
是没有意义的;默认情况下排除相同的项目,所以它现在将排除所有内容。
没有 -includeLeft
、-excludeLeft
或类似的选项。
目前要在右侧为空的情况下进行左外连接(即引用对象中不在差异对象中的项目),我需要按照上面的代码手动过滤结果。
我是不是漏掉了什么/有更好的方法吗?
该 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
}
}
快速提问
是否有更好(即更高效/更简洁)的方法来做到这一点?
compare-object $a $b | ?{$_.SideIndicator -eq '<='}
详情
Compare-Object
提供参数 -excludeDifferent
和 -includeEqual
以允许您修改获得的结果。
- 同时使用两者可以得到内部连接
- 仅使用
-includeEqual
即可获得完整的外部联接 - 仅使用
-excludeDifferent
是没有意义的;默认情况下排除相同的项目,所以它现在将排除所有内容。
没有 -includeLeft
、-excludeLeft
或类似的选项。
目前要在右侧为空的情况下进行左外连接(即引用对象中不在差异对象中的项目),我需要按照上面的代码手动过滤结果。
我是不是漏掉了什么/有更好的方法吗?
该 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
}
}