「プログラムと機能」の一覧を powershell で取得する方法

例えば下図のような「プログラムと機能」の一覧を設計書などにまとめるために、テキストデータとして欲しいときがあります。

そんなときは「コマンドプロンプトか powershell を使ったら取れるだろう」と思ってしまうものですが、この「プログラムと機能」に関しては全ての情報を正確に引っ張ってくるのは無理です

例えばよく利用されるのはこれから紹介する2つの powershell コマンドによって取得する方法ですが、それでも全然足りないし、重複があるしでそのまま一覧として利用するのは不可能です。結局のところマンパワーで解決するしかありません

powershell による取得①

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName,DisplayVersion,Publisher,InstallDate | Format-Table

上記のコマンドを実行することで、レジストリ「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall」の値を出力することができます。最も精度の高い方法のようですが、歯抜けだし重複だらけだしで使い物になりませんね。

例えば今回の例で言うと、11プログラム中以下の6プログラムが出力されていませんでした。

  • Agentless Management Service
  • NVMe Drive Eject NMI Fix
  • RESTful Interface Tool
  • Smart Storage Administrator
  • Smart Storage Administrator CLI
  • Smart Storage Administrator診断およびSSD Wear Gaugeユーティリティ

更によくよく見ると「ESMPRO/ServerAgentService」と「ServerAgentService」があったりと、重複が色々あります。

powershell による取得②

Get-WmiObject Win32_Product | Select-Object Name,Vendor,Version,Caption

上記のコマンドを実行することで、Win32_Product からインストールされたアプリケーションを出力することができます。

例えば今回の例で言うと、11プログラム中以下のプログラムが足りなかったり微妙に名前が違っていたり、「プログラムと機能」には表示されていないものも出力されました。

  • ESMPRO/ServerAgentService ※名前が微妙に違う
  • Matrox Graphics Software (remove only)
  • Product Info Collection Utility (V3.1.7) ※名前が微妙に違う
  • RAID Report Service
  • エクスプレス通報サービス
  • MergeModule2012 ※誰?

結果として、powershell でも綺麗に情報を引っ張ってはこれないので、目視でやるしかないです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)