[Powershell] 対象フォルダ内にあるdllファイルのファイルバージョンとアセンブリバージョンを取得する方法

PowerShell

はじめに

dllファイルのファイルバージョンは「プロパティ」から確認することができますが、アセンブリバージョンを知りたい場合は、Powershellを利用して取得できます。

今回は、対象フォルダにあるDLLファイルのファイルバージョンとアセンブリバージョンを取得して、一覧に出力する備忘録です。

アセンブリバージョンを取得する

まず、対象DLLファイルのアセンブリバージョンは下記のように取得します。

PS> [Reflection.AssemblyName]::GetAssemblyName((Get-ItemProperty '[DLLファイルパス]').FullName)
Version     Name
--------    -----
X.X.X.X     System.〜〜〜.〜〜〜〜

上記を応用して、ディレクトリ内にあるDLLファイルのファイルバージョンとアセンブリバージョン、対象アセンブリを出力します。

PS> Get-ChildItem -Filter *.dll -Recurse | ForEach-Object {
    try {
        $_ | Add-Member NoteProperty FileVersion($_.VersionInfo.FileVersion) 
        $_ | Add-Member NoteProperty AssemblyVersion ([Reflection.AssemblyName]::GetAssemblyName($_.FullName).Version)
  } catch {}
  $_
} | Select-Object Name,FileVersion,AssemblyVersion

実際に実行してみた結果は下記の通りです。
想定通りの出力です。

PS C:\Program Files\IIS\Microsoft Web Deploy> Get-ChildItem -Filter *.dll -Recurse | ForEach-Object {
>> try {
>> $_ | Add-Member NoteProperty FileVersion($_.VersionInfo.FileVersion)
>> $_ | Add-Member NoteProperty AssemblyVersion ([Reflection.AssemblyName]::GetAssemblyName($_.FullName).Version)
>>   } catch {}
>>   $_
>> } | Select-Object Name,FileVersion,AssemblyVersion

Name                                 FileVersion   AssemblyVersion
----                                 -----------   ---------------
Microsoft.Web.Deployment.dll         7.1.622.0     7.1.0.0
Microsoft.Web.Deployment.Tracing.dll 7.1.2606.1246 9.0.0.0

最後に

意外にアセンブリバージョンの情報を知りたい場面は多々あるかと思います。

そういう時はPowershellで取得できてしまうので、是非参考までに。

タイトルとURLをコピーしました