【问题标题】:Compare-Object in PowerShell does not work to show only the differencePowerShell 中的比较对象不能仅显示差异
【发布时间】:2018-02-20 12:25:02
【问题描述】:

尝试了以下命令,但在两个变量中也获取了相似的行条目

但我的要求只是显示两个变量行的差异

值1的内容是:

2273.32689.312
123.33.2312.1
5693.2.3.2.1

value2的内容是:

67556327.2.211.33
123.33.2312.1
55673.222.33.4

输出应该是:

2273.32689.312
5693.2.3.2.1
67556327.2.211.33
55673.222.33.4

这些是我尝试过的命令:

Compare-Object $value1 $value2 | select -ExpandProperty inputobject

Compare-Object $value1 $value2 -Property "$property" | Format-Table -AutoSize

Compare-Object -ReferenceObject $value2 -DifferenceObject $value1 | select -expandproperty InputObject​

【问题讨论】:

  • 我们需要您用于$value$value2 的示例。向我们展示您得到什么以及您期望得到什么。 Compare-Object 按预期正常为我工作。您实际使用的是哪个版本的 PowerShell?
  • 主要 5 和次要 1 版本
  • 已编辑问题以显示 value1 和 value2 的内容
  • 如果我为$value1 = ("2273.32689.312", "123.33.2312.1", "5693.2.3.2.1") 设置$value1 = ("2273.32689.312", "123.33.2312.1", "5693.2.3.2.1") 和类似的$value2,您的第一行将返回非常好的结果。这是您分配输入数组的方式吗?
  • 已经分配了一行又一行.....一行一行

标签: powershell object compare powershell-5.0


【解决方案1】:

以下对我有用 -

$value1 = @('2273.32689.312', '123.33.2312.1', '5693.2.3.2.1')
$value2 = @('67556327.2.211.33', '123.33.2312.1', '55673.222.33.4')
Compare-Object -ReferenceObject $value2 -DifferenceObject $value1 | select -expandproperty InputObject

我得到如下所需的输出 -

2273.32689.312
5693.2.3.2.1
67556327.2.211.33
55673.222.33.4

您粘贴的代码在InputObject 后面多了一个字符。您可能想在一行中检查一次 -

Compare-Object -ReferenceObject $value2 -DifferenceObject $value1 | select -expandproperty InputObject​

【讨论】:

    【解决方案2】:

    如果您的输入对象包含带有多行的单个字符串,您应该用新行将它们拆分以创建字符串数组:(如果它们用空格分隔,请改用-split ' '

    $value1 = $value1 -split '\r\n'
    $value2 = $value2 -split '\r\n'
    Compare-Object $value1 $value2
    

    【讨论】:

    • 它获取两个变量中的值。但我只需要获取两个变量中的差异和相似值不应在输出中列出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    相关资源
    最近更新 更多