コマンドプロンプトでインストール済みソフト一覧を取得・保存する方法|WMICの代替

Windowsのコマンドプロンプトでインストール済みのソフトを一覧表示するなら、WinGetが利用できる環境ではwinget listから確認します。以前よく使われたwmic productは、Windows Installerの整合性検査・修復を誘発することがあるため、単なる一覧取得の標準手順にはしません。

目次

まずはwinget listで一覧を表示する

スタートで「cmd」を検索してコマンドプロンプトを開き、次を実行します。通常の一覧確認のために、最初から管理者として起動する必要はありません。

winget list

名前・ID・バージョンなどを確認できます。WinGet以外の方法でインストールされたアプリも対象になり、更新候補が表示される場合もあります。このコマンドは一覧表示であり、アプリを更新・削除する指示ではありません。

初回などにソースの利用条件への同意を求められる場合は、内容を確認して判断してください。自動同意のオプションを無条件に付ける必要はありません。対象名を絞る場合は、例えば次のように検索語を指定します。

winget list --name "Microsoft"

詳しいオプションはMicrosoftのwinget listリファレンスで確認できます。

一覧をテキストファイルへ保存する

一度画面で一覧を取得できることを確認してから、コマンドプロンプトで次を実行します。保存先は現在のユーザーフォルダーです。

winget list > "%USERPROFILE%\InstalledProgramsList.txt"

同名ファイルがあると上書きされます。以前の記録を残すならファイル名を変えてください。保存後はファイルを開き、一覧が含まれているか、エラーや条件確認の文だけになっていないかを確認します。画面幅などで表示が省略されることもあるため、このテキストを完全な棚卸しデータとは見なしません。

wingetが認識されない・対象ソフトが出ない場合

wingetが見つからない場合、必ずしも管理者権限の不足ではありません。Windowsの版、アプリインストーラーの有無・更新状態、組織の利用制限を確認します。管理されたPCでは無断でソフトを追加せず、管理者へ相談してください。目視確認ならWindowsの[設定]→[アプリ]→[インストールされているアプリ]も使えます。

一覧にないことだけで「未インストール」と断定しないでください。他ユーザーだけに登録されたアプリ、展開しただけのポータブルソフト、登録方式が異なる製品などは、取得方法によって漏れます。ライセンスの保有・利用権や実際の利用状況も、この一覧だけでは証明できません。

補足:PowerShellで登録情報をCSVへ出力する

以下はコマンドプロンプトではなく、64ビット版のWindows PowerShellで実行する例です。PC全体の通常アプリ登録と現在ユーザーの登録を読み取ります。レジストリの変更やアンインストールは行いません。

$paths = @(
  'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*',
  'HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
  'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
Get-ItemProperty -Path $paths -ErrorAction SilentlyContinue |
  Where-Object { $_.DisplayName } |
  Select-Object DisplayName, DisplayVersion, Publisher |
  Sort-Object DisplayName |
  Export-Csv -Path "$env:USERPROFILE\InstalledProgramsList.csv" -NoTypeInformation -Encoding UTF8

これも全ソフトの網羅を保証する方法ではありません。アクセスできない登録先は取得されず、同じ製品の複数エントリが出る場合もあります。登録されていない実行ファイルや、別ユーザーの登録は別途確認が必要です。CSVは同名で上書きされるため、保存先を確認してください。

Microsoft Store系のパッケージを現在ユーザーについて補完確認する場合は、PowerShellで次を使います。全ユーザーの一覧とは異なります。

Get-AppxPackage | Select-Object Name, Version

wmic productを使わない理由

Win32_Productへの問い合わせはMSI形式で登録された製品が中心で、すべてのアプリを列挙する仕組みではありません。さらに整合性検査と修復処理が走る場合があります。Get-CimInstance Win32_Productに書き換えても、同じクラスを問い合わせる問題は避けられません。Microsoftもソフトウェア情報取得の説明でこの副作用に注意を促しています。

WMIC自体も非推奨化・削除が進んでいます。一覧取得のためだけに復活させるのではなく、取得範囲に合う代替を選びます。「定期的に実行すれば次回が速くなる」とも限りません。

旧記事の画面について

以下は旧記事に掲載していた参考画像です。WMICなど旧手順の画面は現在の推奨操作ではありません。実行手順は上のWinGet・登録情報の読み取りを参照してください。

一覧を活用するときの注意

ソフト名やバージョンの一覧は、更新確認やPC移行の準備に役立ちます。ただし、見覚えのない名前を直ちにマルウェアと決めたり、一括で削除したりしないでください。製造元、用途、業務上の必要性を確認してから対応します。企業の一覧には利用製品などの内部情報が含まれるため、共有先と保存場所も制限しましょう。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次