インストールされているアプリやソフトを一覧で出力する方法 - Windows11

インストールされているアプリやソフトを一覧で出力する方法 - Windows11

こんな人にオススメの記事です

  • パソコンの引っ越しに伴って既存のアプリやソフトを一覧にしたい人
  • 社内のPCにインストールされているソフトウェアを把握・管理したい人
  • パソコンにインストールされているソフトウェアのバージョンや発行元を確認したい人

皆さんは、パソコンにインストールされているアプリケーションの一覧を取得したいと思ったことはありませんか?

ソフトウェアの管理やパソコン再インストール時のリストアップに役立つのはもちろん、不審なアプリがインストールされていないかチェックするためにも、アプリの一覧化は重要です。

この記事では、Windowsにインストールされているアプリやソフトを、PowerShellを使用してCSV形式で出力する方法をご紹介します。

この方法は管理者権限を必要とせず、追加のソフトウェアのインストールも不要です。

ペイントやメモ帳など、Windows標準アプリも取得できるのでオススメです。

初心者の方でも簡単に実行できるので、ぜひお試しください。

PowerShellを使用して出力したインストールされているアプリの一覧
PowerShellを使用して出力したインストールされているアプリの一覧
目次

インストールされているアプリの一覧をCSV形式でデスクトップに出力するコマンド

早速、コマンドからご紹介します。

以下のコマンドをPowerShellに貼り付けるだけで、インストールされているアプリの一覧をCSV形式でデスクトップに出力できます。

PowerShellの起動方法は、WindowsでPowerShellを起動する方法をご覧ください。

コマンドに改行が含まれているため、貼り付け時に「警告」と書かれたウィンドウが立ち上がりますが、[強制的に貼り付け]をクリックすると実行可能です。

# 従来のデスクトップアプリとUWPアプリを取得し、統合
$AllApps = @()

# レジストリから従来のデスクトップアプリを取得
$RegApps = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
                            'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
                            'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*' -ErrorAction SilentlyContinue |
Where-Object { $_.DisplayName -and $_.UninstallString -and -not $_.SystemComponent -and ($_.ReleaseType -notin 'Update','Hotfix') -and -not $_.ParentKeyName } |
Select-Object @{Name='Name';Expression={$_.DisplayName}}, @{Name='Version';Expression={$_.DisplayVersion}}, Publisher, InstallDate

# 現在のユーザーのUWPアプリを取得(管理者権限不要)
$UWPApps = Get-AppxPackage |
Select-Object @{Name='Name';Expression={$_.Name}}, @{Name='Version';Expression={$_.Version}}, Publisher, @{Name='InstallDate';Expression={$_.InstallTime}}

# アプリケーションの一覧を結合
$AllApps = $RegApps + $UWPApps

# 重複を削除し、名前で昇順にソートしてCSVにエクスポート
$AllApps | Group-Object Name | ForEach-Object { $_.Group[0] } | Sort-Object Name |
Select-Object Name, Version, Publisher, InstallDate |
Export-Csv "$env:USERPROFILE\Desktop\InstalledApplications.csv" -NoTypeInformation -Encoding UTF8BOM

このコマンドのオススメポイント

上記で紹介したコマンドのオススメポイントです。

  • 簡単操作で手間いらず
    • コマンドをコピー&ペーストするだけで、複雑な設定や操作は不要です。
  • 管理者権限が不要
    • 権限の制限がある職場や学校でも安心して実行できます。
  • 追加ソフトのインストール不要
    • Windows標準のPowerShellだけで完結するので、新たなソフトウェア導入の手間がありません。
  • 従来のアプリとWindows標準アプリを一括取得
    • Microsoft Storeからインストールしたアプリも含め、すべてのアプリを網羅できます。
  • CSV形式での出力
    • Excelなどで開いて、自由に編集・フィルタリングが可能です。
  • パソコン移行時の強い味方
    • 現在の環境をそのまま新しいPCに再現する際に大活躍します。

このコマンドを活用することで、パソコンのソフトウェア管理や移行作業が大幅に効率化されます。
インストールされているすべてのアプリを一覧化し、バージョンや発行元などの情報を一目で確認できるため、再インストールやライセンス管理にも役立ちます。

コマンドの詳細

このコマンドは、パソコンにインストールされているすべてのアプリケーションを取得し、CSV形式で出力するものです。

以下では、コマンドの中身を順を追って解説し、どの部分がどんな役割をしているかわかりやすく説明します。

自身でコマンドをカスタマイズしたい場合は是非参考にしてください。

空の配列を初期化

$AllApps = @()
  • 目的:アプリケーション情報を格納するための空の配列 $AllApps を作成します。
  • ポイント:後で取得する従来のアプリとUWPアプリの情報を、この配列に結合します。

レジストリから従来のデスクトップアプリを取得

$RegApps = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
                            'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
                            'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*' -ErrorAction SilentlyContinue |
    Where-Object {
        $_.DisplayName -and
        $_.UninstallString -and
        (-not $_.SystemComponent -or $_.SystemComponent -eq 0) -and
        (-not $_.ReleaseType -or ($_.ReleaseType -ne 'Update' -and $_.ReleaseType -ne 'Hotfix')) -and
        (-not $_.ParentKeyName)
    } |
    Select-Object @{Name='Name'; Expression={$_.DisplayName}},
                  @{Name='Version'; Expression={$_.DisplayVersion}},
                  @{Name='Publisher'; Expression={$_.Publisher}},
                  @{Name='InstallDate'; Expression={$_.InstallDate}}

説明:

  • Get-ItemProperty:指定したレジストリパスから、アプリケーションのプロパティを取得します。
    • パス指定
      • HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*:64ビットアプリの情報。
      • HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*:32ビットアプリの情報。
      • HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*:現在ログインしているユーザーでインストールされたアプリの情報。
    • -ErrorAction SilentlyContinue:エラーが発生しても表示せずに処理を続行します(アクセス権限のないキーがあるため)。
  • Where-Object:取得したアプリケーション情報を、以下の条件でフィルタリングします。
    • $_ .DisplayName が存在する:アプリ名がある。
    • $_ .UninstallString が存在する:アンインストール情報がある。
    • (-not $_.SystemComponent -or $_.SystemComponent -eq 0):システムコンポーネントではない。
    • (-not $_.ReleaseType -or ($_.ReleaseType -ne 'Update' -and $_.ReleaseType -ne 'Hotfix')):更新プログラムやホットフィックスではない。
    • (-not $_.ParentKeyName):親キーを持たない。
  • Select-Object:必要なプロパティを選択し、以下のようにカスタムオブジェクトを作成します。
    • NameDisplayName の値を使用。
    • VersionDisplayVersion の値を使用。
    • PublisherPublisher の値を使用。
    • InstallDateInstallDate の値を使用。
  • ポイント
    • レジストリから取得できるアプリケーション情報を、インストールしたものに限定しています。
    • システム関連のコンポーネントや更新プログラムを除外する。

現在のユーザーのUWPアプリを取得

$UWPApps = Get-AppxPackage |
    Select-Object @{Name='Name'; Expression={$_.Name}},
                  @{Name='Version'; Expression={$_.Version}},
                  @{Name='Publisher'; Expression={$_.Publisher}},
                  @{Name='InstallDate'; Expression={$_.InstallTime}}

説明:

  • Get-AppxPackage:現在のユーザーにインストールされている UWP(Universal Windows Platform)アプリケーションを取得します。
  • Select-Object:必要なプロパティを選択し、カスタムオブジェクトを作成します。
    • NameName の値を使用(アプリケーションのパッケージ名)。
    • VersionVersion の値を使用。
    • PublisherPublisher の値を使用。
    • InstallDateInstallTime の値を使用。
  • ポイント
    • UWPアプリは従来のレジストリには登録されていないため、Get-AppxPackage コマンドレットを使用します。
    • これにより、Microsoft Storeからインストールしたアプリや、Windows 標準のアプリも取得できます。

アプリケーション情報を統合

$AllApps = $RegApps + $UWPApps
  • 目的:従来のデスクトップアプリ($RegApps)と UWP アプリ($UWPApps)を結合し、すべてのアプリケーション情報を $AllApps に格納します。
  • ポイント
    • 2つの異なるソースから取得したアプリケーション情報を1つの配列にまとめることで出力結果が見やすくなります。

重複を削除し、ソートしてCSVにエクスポート

$AllApps |
    Group-Object Name |
    ForEach-Object { $_.Group[0] } |
    Sort-Object Name |
    Select-Object Name, Version, Publisher, InstallDate |
    Export-Csv "$env:USERPROFILE\Desktop\InstalledApplications.csv" -NoTypeInformation -Encoding UTF8BOM

説明:

  • Group-Object Name:アプリケーション名(Name プロパティ)でグループ化します。
  • ForEach-Object { $_.Group[0] }:各グループの最初のアイテムを取得します。
    • 目的:同じ名前のアプリケーションが重複している場合、1つにまとめます。
  • Sort-Object Name:アプリケーション名で昇順にソートします。
  • Select-Object Name, Version, Publisher, InstallDate:必要なプロパティのみを選択します。
  • Export-Csv:結果を CSV ファイルとしてエクスポートします。
    • "$env:USERPROFILE\Desktop\InstalledApplications.csv":デスクトップにファイルを保存します。
    • -NoTypeInformation:CSV ファイルに型情報の行を含めません。
    • -Encoding UTF8BOM:エンコーディングを UTF-8(BOM付き)に設定し、文字化けを防止します。
  • ポイント
    • 重複削除:同名のアプリケーションが複数存在する場合(例えば、異なるバージョンやアーキテクチャ)、最初の1つのみを残します。
    • ソート:アプリケーション名でソートすることで、一覧が見やすくなります。
    • CSV出力:Excelなどで開きやすい CSV 形式で出力し、後からの分析や管理が容易になります。

注意点

  • 情報の欠落
    • 一部のアプリケーションは、Version や Publisher の情報を提供していない場合があります。
    • その場合、取得がうまくいかない場合があります。
  • インストール日の表示
    • 従来のデスクトップアプリの InstallDate は「YYYYMMDD」の形式で表示されます。
    • UWP アプリの InstallDate は日時形式で表示されます。
  • 文字化けの防止

よくある質問と答え

インストールされているアプリやソフトを一覧で出力する方法に関するよくある質問と答えをまとめました。

この方法で、本当にすべてのインストール済みアプリやソフトが一覧化されますか?

はい、この方法では従来のデスクトップアプリとWindows標準アプリの両方を含む、インストールされているすべてのアプリケーションを一覧化できます。

PowerShellを使ったことがない初心者ですが、この手順を実行できますか?

はい、初心者の方でも簡単に実行できます。記事に記載されたコマンドをコピーして、PowerShellに貼り付けて実行するだけです。

この方法を実行するのにパソコンの管理者権限は必要ですか?

いいえ、管理者権限は不要です。通常のユーザーとしてPowerShellを起動して実行できます。

MacやLinuxでもこの方法は使えますか?

この方法はWindows専用です。MacやLinuxでは異なる方法が必要です。

コマンドを実行した後、ファイルはどこに保存されますか?

デスクトップに「InstalledApplications.csv」という名前で保存されます。

この方法でアプリをアンインストールすることはできますか?

いいえ、このスクリプトはアプリケーションの一覧を出力するだけで、アンインストール機能はありません。

一覧にはアプリのバージョンやインストール日も含まれますか?

はい、アプリケーションの名前、バージョン、発行元、インストール日が一覧に含まれます。

この方法はWindows 10でも使えますか?

はい、Windows 10でも同様の手順で実行できます。

他のユーザーがインストールしたアプリも一覧に含めることはできますか?

この方法では現在のユーザーのアプリケーションが対象です。

管理者権限で実行した場合、すべてのアプリが表示されるか?

はい、PowerShellを管理者として実行すると、より多くのアプリケーションが一覧に表示されます。

メモ帳や、ペイント、マップなどのあるはずのアプリが一覧にありません。

Windows標準アプリが正式名称が異なる場合があります。メモ帳は「Microsoft.WindowsNotepad」ペイントは「Microsoft.Paint」マップは「Microsoft.WindowsMaps」と出力されます。

その他Windows11に関する記事

その他Windows11に関する記事はこちらです。ぜひご覧ください。

最後までご覧いただきありがとうございました。
このサイトは情シスマンが半径3m以内のITに関する情報を掲載してるサイトです。
Windows系を主として、ソフトや周辺機器の操作や設定について画像も用いながらわかりやすく解説しています。

解説している内容に誤りがあった場合や、補足が必要な場合、もっと知りたい場合はこちらのお問い合わせフォームからご連絡ください。
個人の方を限定にサポートさせていただきます。

実行環境
Windows11 Home 24H2
64 ビット オペレーティング システム
11th Gen Intel(R) Core(TM) i7-11375H @ 3.30GHz 3.30 GHz
16.0 GB RAM
Microsoft 365

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次