社内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管理に役立つ仕組みを構築できます。