2 つの異なるディレクトリのファイルのバージョン情報を比較したいと思います。
私はこれを行うことができます:
$files1 = (Get-Item "$path1\*.dll").VersionInfo
$files2 = (Get-Item "$path2\*.dll").VersionInfo
compare-object $files1 $files2
しかし、次のようなものが得られます。
入力オブジェクト ----------- ファイル: path1\AxInterop.ShDocVw.dll... ファイル: path1\dom.dll... (等...) ファイル: path2\AxInterop.ShDocVw.dll... ファイル: path2\dom.dll... (等...)
私は次のようなことができると思います:
$files1 = (Get-Item "$path1\*.dll").VersionInfo.ProductVersion
$files2 = (Get-Item "$path2\*.dll").VersionInfo.ProductVersion
compare-object $files1 $files2
$files1 = (Get-Item "$path1\*.dll").VersionInfo.FileVersion
$files2 = (Get-Item "$path2\*.dll").VersionInfo.FileVersion
compare-object $files1 $files2
しかし、違いがある場合は、その違いが何であるかを探しに行かなければなりません。1 つのセットが署名されていて、もう 1 つのセットが署名されていないため、ファイルを直接比較することはできません。
これを行う最善の方法は何ですか?
明確にするために、現在のcompare-object
コマンドレットは、パスが異なることを示しているため、ファイル名が異なると表示されているため、私のニーズを満たしていません。これは私には関係ありません。
ファイル名が同じでバージョン番号が異なる行を比較したいと思います。同じファイル名のバージョン番号に違いがある場合、またはファイル名がテーブルの 1 つに存在しない場合は、違いを示します。