是否可以在显示参考与差异对象差异的两列中显示PowerShell Compare-Object
的结果?
例如使用我当前的cmdline:
Compare-Object $Base $Test
给出:
InputObject SideIndicator 987654 => 555555 <= 123456 <=
实际上这个名单很长。为了便于数据读取,可以像这样格式化数据:
Base Test 555555 987654 123456
因此,每列显示该对象中存在哪些元素与另一列。
对于奖励积分,如此在列标题中计数会很棒:
Base(2) Test(1) 555555 987654 123456
答案 0 :(得分:2)
可能?当然。可行?没那么多。 PowerShell并不是真正用于创建这种表格输出。您可以做的是通过输入文件将哈希表中的差异收集为嵌套数组:
$ht = @{}
Compare-Object $Base $Test | ForEach-Object {
$value = $_.InputObject
switch ($_.SideIndicator) {
'=>' { $ht['Test'] += @($value) }
'<=' { $ht['Base'] += @($value) }
}
}
$cnt = $ht.Values |
ForEach-Object { $_.Count } |
Sort-Object |
Select-Object -Last 1
$keys = $ht.Keys | Sort-Object
0..($cnt-1) | ForEach-Object {
$props = [ordered]@{}
foreach ($key in $keys) {
$props[$key] = $ht[$key][$_]
}
New-Object -Type PSObject -Property $props
} | Format-Table -AutoSize
要将标题名称中的项目计数更改为$props[$key]
至$props["$key($($ht[$key].Count))"]
。