Windows:プログラム一覧をコマンドで取得

Windows

GUIで取得できる「プログラム」の一覧をコマンドで取得する方法を考えてみます。

結論

最初に結論。
下記リンク参照。
レジストリを参照することでそれっぽいものは出力できるけど、過不足や差異が発生するとのこと。

https://support.microsoft.com/ja-jp/topic/-info-%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB-%E3%83%91%E3%83%8D%E3%83%AB%E3%81%AE-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%A8%E6%A9%9F%E8%83%BD-%E3%81%BE%E3%81%9F%E3%81%AF-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E8%BF%BD%E5%8A%A0%E3%81%A8%E5%89%8A%E9%99%A4-%E3%81%AE%E4%B8%80%E8%A6%A7%E3%82%92%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93-5ecfcdf2-06ca-3e8f-f542-cdcd5014cf7d

マイクロソフトの技術サポートでは、[プログラムと機能] または、[プログラムの追加と削除] の一覧情報を出力する方法、および、IShellApp インターフェースの利用方法については対応できません。ご了承ください。

だから、なぜそんなつくりにするの・・・

一応、それっぽいものは取得できるので、興味のある人は続きをどうぞ。

目的

取得したい情報は下記のGUIの情報

「名前」、「発行元」、「インストール日」、「サイズ」、「バージョン」が項目としてある。

Get-WmiObject Win32_Product

Powershellで「Get-WmiObject Win32_Product」を実行

IdentifyingNumber : {AC76BA86-7AD7-1041-7B44-AC0F074E4100}
Name : Adobe Acrobat Reader DC – Japanese
Vendor : Adobe Systems Incorporated
Version : 21.005.20048
Caption : Adobe Acrobat Reader DC – Japanese

これだけでも「インストール日」と「バージョン」以外は取得できてる。

ただこれだとGUIで表示された一覧にあるものがすべて表示されるわけではなく、
MSIでインストールしたものだけが表示される模様。処理時間も長め。

レジストリ参照

結論でできないこともわかっているのでなるべくシンプルな作りで作成。
Windowsは64bit想定。32bitならレジストリの3項目目は不要。(Wow6432 Nodeを含む行)

Get-ChildItem -Path(
'HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',
'HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',
'HKLM:SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
) | 
% { Get-ItemProperty $_.PsPath | Select-Object DisplayName, Publisher, InstallDate, EstimatedSize, DisplayVersion }

結果はこんな感じ。単体で見るとGUIの内容と一致。基本的にはこれでよいと思うが過信は禁物、実際に使う場合はよくチェックしてください。

DisplayName : Adobe Acrobat Reader DC – Japanese
Publisher : Adobe Systems Incorporated
InstallDate : 20210611
EstimatedSize : 383707
DisplayVersion : 21.005.20048

広告

コメント

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