Powershell で Compare-object を使用して、サイズ、最終書き込み時間、およびバージョン番号に基づいて dll ファイルを比較しています。これらのファイルはリモート サーバーに保存されます。私は結果を得ています。唯一の問題は、結果からバージョン番号の値を取得する方法です。以前の質問では、最適化されていない別のアプローチに従っていました。ここで表示できます:バージョン番号とその他の基準に基づいてファイルを比較し、出力をフォーマットしています 。私の更新されたスクリプトは次のとおりです。
$s1=New-PSSession -ComputerName $c1
$first=Invoke-Command -Session $s1 -ScriptBlock{param($path1) Get-ChildItem -Path $path1 -Filter *.dll} -ArgumentList $path1
$s2=New-PSSession -ComputerName $c2
$second=Invoke-Command -Session $s2 -ScriptBlock{param($path2) Get-ChildItem -Path $path2 -Filter *.dll} -ArgumentList $path2
$diff = Compare-Object -ReferenceObject $first -DifferenceObject $second -Property Name, Length, LastWriteTime, VersionInfo -PassThru | Select Name, Length, LastWriteTime, sideindicator,@{n="VersionInfo";e= { $_.VersionInfo.Productversion }}
$diff
ここで、c1 と c2 はコンピューター名であり、path1 と path2 はそれぞれ c1 と c2 内のフォルダーのパスです。出力にはバージョン番号が含まれていません。次の形式です。
Name : PhotoViewer.dll
Length : 20480
LastWriteTime : 8/9/2015 4:46:08 PM
SideIndicator : <=
VersionInfo :