【PowerShell】インストール済みソフトウェアを一覧表示・CSV出力する方法

【PowerShell】インストール済みソフトウェアを一覧表示・CSV出力する方法 PowerShell

社内PCの棚卸しやセキュリティ対策の一環として、「インストール済みソフトウェアの一覧を取得したい」というニーズはよくあります。PowerShellを使えば、レジストリからソフト一覧を抽出し、CSVファイルとして保存することができます。この記事では、Windows環境でインストール済みソフトを一覧表示・CSV出力する実用スクリプトを紹介します。

基本スクリプト(64bit環境)

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object { $_.DisplayName } |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Sort-Object DisplayName

このコマンドは、64bitアプリの情報を取得します。

32bitアプリも含めて取得するには

32bitアプリケーションは別のレジストリキーに格納されています。両方取得するには次のように記述します:

$software64 = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
  Where-Object { $_.DisplayName }

$software32 = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
  Where-Object { $_.DisplayName }

$allSoftware = $software64 + $software32

$allSoftware |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Sort-Object DisplayName

CSVファイルに出力する方法

$allSoftware |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Sort-Object DisplayName |
Export-Csv -Path ".\installed_software.csv" -NoTypeInformation -Encoding UTF8

このスクリプトを実行すれば、カレントディレクトリに installed_software.csv という一覧ファイルが生成されます。

システムアカウントでの取得注意点

  • 管理者としてPowerShellを起動する必要があります
  • 一部のアプリは「ユーザー単位」でインストールされているため、HKCU(HKEY_CURRENT_USER)にも情報がある場合があります

ユーザーインストール(HKCU)の取得

Get-ItemProperty HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object { $_.DisplayName } |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate

まとめ

PowerShellを使えば、インストール済みソフトウェアの情報をレジストリから抽出し、視認性の高い形式(CSVなど)で出力することが可能です。手作業では時間のかかるソフト資産管理も、自動スクリプトで効率化できます。複数台PCへの適用やリモート実行との組み合わせで、企業内のIT管理に役立つ仕組みを構築できます。