在发布之前我做了很多搜索而没有运气.我们假设我要比较两个文件夹
compare-object @(gci c:\folder1) @(gci c:\folder2)
Run Code Online (Sandbox Code Playgroud)
我用sideIndicator看到了输出,但是我怎么能做类似的事情
if objects are equals then
do something
else
do something else
end if
Run Code Online (Sandbox Code Playgroud)
如果我将这个cmdlet传递给get-member我会看到一个equals方法,但我不知道如何使用它,我甚至不确定它是否可以解决我的问题.是否有任何布尔属性告诉我对象是否等于?谢谢你的时间.
编辑
嗨,我的救世主.:)如果我明白我必须做这样的事情:
$differences = 0
$a = @(1,4,5,3)
$b = @(1,3,4)
diff $a $b -in | % {if($_.sideindicator -ne "==") {$differences+=1}}
write-host $differences
Run Code Online (Sandbox Code Playgroud)
这是唯一的方法吗?
编辑2.
在我看来,如果我不使用-includeEqual我只得到差异,所以这个代码就足够了.
$differences = 0
$a = @(1,4,5,3)
$b = @(1,3,4)
diff $a $b | % {$differences+=1}
write-host $differences
Run Code Online (Sandbox Code Playgroud)
如果对象等于,则返回0.这是解决我问题的正确方法吗?
基本上,您不需要计算差异,相反,如果只是找到'=='就足够了,您可以使用:
$a = @(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
$b = @(10, 1, 2, 3, 4, 5, 6, 7, 8, 9)
if (diff $a $b) {
'not equal'
} else {
'equal'
}
Run Code Online (Sandbox Code Playgroud)
它是如何工作的:如果管道(来自diff的序列)返回0项的集合,那么当转换为时[bool],它将被转换为$false.非空集合转换为$true.
| 归档时间: |
|
| 查看次数: |
24704 次 |
| 最近记录: |