2016-11-28 3 views
0

PowerShell Compare-Objectの結果を、参照対差分オブジェクトの違いを示す2列に表示することはできますか?Compare-Object - 別のサイドカラム

私の現在のコマンドラインパラメータを使用した例

Compare-Object $Base $Test 

を与える:

InputObject  SideIndicator 
987654   => 
555555   <= 
123456   <=

は、実際にはリストはかなり長いです。簡単データの読み出しのために、それはそうのようなデータをフォーマットすることが可能である:

Base Test 
555555 987654 
123456

したがって、各列は、他の対そのオブジェクトに存在する要素を示しています。

Base(2) Test(1) 
555555 987654 
123456

答えて

2

可能:

ボーナスポイントのためにそうのような列ヘッダーの数を持っている素晴らしいことでしょうか?確かに。実現可能か?そうではありません。 PowerShellは、この種の表形式の出力を作成するために実際には構築されていませんでした。

$ht = @{} 
Compare-Object $Base $Test | ForEach-Object { 
    $value = $_.InputObject 
    switch ($_.SideIndicator) { 
    '=>' { $ht['Test'] += @($value) } 
    '<=' { $ht['Base'] += @($value) } 
    } 
} 

その後、transpose the hashtable

$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($($ht[$key].Count))"]にヘッダ名の変更$props[$key]にアイテム数を含めるには何ができることは、入力ファイルでネストされた配列として、ハッシュテーブルの違いを集めています。

+0

これは素晴らしいおかげです。 Powershellは、私が学ぶすべてのトリックをもっと驚かせます! – AMcNall

関連する問題