

Compare-Objectにおける、ソート順の差異による出力結果の違いについての質問です。

### 前提事項

比較元と比較先でソート順を変えてdiffを取った場合、バイナリによる比較とハッシュ値による比較では結果が異なります。  
具体的に申し上げますと、下記ディレクトリ構成の「file1.txt」を異なる内容にした場合、  
バイナリ比較では、比較元の「修正前.xlsx」と比較先の「file1.txt」で差分を出力します。（ディレクトリの違いによるアンマッチを出力する。）  
ハッシュ値の比較では、比較元の「file1.txt」と比較先の「file1.txt」で差分を出力します。（同ディレクトリ配下のアンマッチを出力する。）

### 質問事項

なぜハッシュ値による比較では、比較元と比較先でソート順が違うのに同ディレクトリの差分のみを出力できるのか？  
バイナリ比較とハッシュ値比較での挙動の違いについて説明可能な方がいましたら、ご教示頂けますでしょうか。

### コード

[code]

    #比較元と比較先でソート順を別にしている。
    $master = Get-ChildItem -LiteralPath [比較元ディレクトリ] -Recurse -File | Sort-Object{$_.LastWriteTime}
    $work = Get-ChildItem -LiteralPath [比較先ディレクトリ] -Recurse -File | Sort-Object{$_.FullName}
    
    #バイナリ比較
    @(Compare-Object (Get-Content -Encoding Byte $master.FullName) (Get-Content -Encoding Byte $work.FullName) -PassThru)
    
    #ハッシュ値比較
    @(Compare-Object -Property Hash (Get-FileHash $master.FullName) (Get-FileHash $work.FullName) -PassThru)
    
[/code]

### ディレクトリ構成(比較元と比較先で同一)

[code]

    dir1
     └─dir2
         └─dir3
             ├─PG1
             │      file1.txt
             │      file2.txt
             │      file3.txt
             │      
             └─PG2
                     修正前.xlsx
    
[/code]


CC BY-SA 4.0
2022-01-21T13:35:26.273
85847
2022-01-21T15:32:37.740
2022-01-21T15:32:37.740
3060
51016
question
powershell
Compare-Objectにおける、ソート順の差異による出力結果の違いについて