PowerShell でインストール済みのソフトウェアを調査する
この投稿は PowerShell Advent Calandar 2011 の5日目の記事です。
Windows にインストールされているソフトウェアを調査する際に、最も手軽な手段は コントロールパネル –> プログラム –> プログラムと機能 の利用です(Windows 7 の場合)。

しかし、この方法では毎度毎度目視による確認が必要となり、作業の省力化は実現できません。
規模の大きな組織であれば、こういったソフトウェア資産管理の自動化・効率化を目的に「資産管理システム」の導入を検討します。
ただ、資産管理システムは高価であることが多く、中小の組織には導入のハードルが高いのも事実です。
そこで、PowerShell を利用して Windows にインストール済みのソフトウェアを再利用しやすいかたちで取得する方法を紹介します。
コード例
Get-WmiObject -Class Win32_product –ComputerName “PC1” | Select-Object Name, Vendor | Export-Csv c:\InstalledSoftwareList.csv -encoding Default –NoTypeInformation

解説
Get-WmiObject -Class Win32_product –ComputerName “PC1”
PC1 というコンピュータ名の Windows から、Windows インストーラによってインストールされたソフトウェアに関する情報を取得します。
PC1 では WMI Windows インストーラ プロバイダ が有効になっている必要があります。
Select-Object Name, Vendor
Win32_Product クラスは多くのプロパティを含みますが、Select-Object コマンドレットにより Name プロパティと Vendor プロパティを取得します。
Export-Csv c:\InstalledSoftwareList.csv -encoding Default –NoTypeInformation
Export-Csv コマンドレットにより、取得した Name プロパティと Vendor プロパティとを csv 形式で出力します。
その際、-encoding Default オプションにより、文字エンコーディングがシステム デフォルトとなり、文字化けを防止します。
また、-NoTypeInformation オプションにより、 csv ファイルの1行目に .NET Framework の型名が出力されるのを抑止します。
以上です。