こんな人にオススメの記事です
- パソコンの引っ越しに伴って既存のアプリやソフトを一覧にしたい人
- 社内のPCにインストールされているソフトウェアを把握・管理したい人
- パソコンにインストールされているソフトウェアのバージョンや発行元を確認したい人
皆さんは、パソコンにインストールされているアプリケーションの一覧を取得したいと思ったことはありませんか?
ソフトウェアの管理やパソコン再インストール時のリストアップに役立つのはもちろん、不審なアプリがインストールされていないかチェックするためにも、アプリの一覧化は重要です。
この記事では、Windowsにインストールされているアプリやソフトを、PowerShellを使用してCSV形式で出力する方法をご紹介します。
この方法は管理者権限を必要とせず、追加のソフトウェアのインストールも不要です。
初心者の方でも簡単に実行できるので、ぜひお試しください。
インストールされているアプリの一覧を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
:必要なプロパティを選択し、以下のようにカスタムオブジェクトを作成します。Name
:DisplayName
の値を使用。Version
:DisplayVersion
の値を使用。Publisher
:Publisher
の値を使用。InstallDate
:InstallDate
の値を使用。
- ポイント:
- レジストリから取得できるアプリケーション情報を、インストールしたものに限定しています。
- システム関連のコンポーネントや更新プログラムを除外する。
現在のユーザーの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
:必要なプロパティを選択し、カスタムオブジェクトを作成します。Name
:Name
の値を使用(アプリケーションのパッケージ名)。Version
:Version
の値を使用。Publisher
:Publisher
の値を使用。InstallDate
:InstallTime
の値を使用。
- ポイント:
- UWPアプリは従来のレジストリには登録されていないため、
Get-AppxPackage
コマンドレットを使用します。 - これにより、Microsoft Storeからインストールしたアプリや、Windows 標準のアプリも取得できます。
- UWPアプリは従来のレジストリには登録されていないため、
アプリケーション情報を統合
$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
は日時形式で表示されます。
- 従来のデスクトップアプリの
- 文字化けの防止
- エンコーディングを
UTF8BOM
に設定していますが、Excel で文字化けしてしまう場合はメモ帳などで開いて、文字コードを変換してください。
- エンコーディングを
よくある質問と答え
インストールされているアプリやソフトを一覧で出力する方法に関するよくある質問と答えをまとめました。
その他Windows11に関する記事
その他Windows11に関する記事はこちらです。ぜひご覧ください。
-
Windows11
Windows11 24H2を今すぐダウンロードしてアップデートする方法
こんな人にオススメの記事です Windowsアップデートを待たずにWindows11 24H2をインストールしたい人 今すぐWindows11 24H2にアップデートしたい人 手動でWindows11 24H... -
Windows11
Microsoft Edgeでシークレットモード(InPrivate ブラウズ)を使う方法
こんな人にオススメの記事です 共用パソコンなどでインターネットの閲覧履歴(閲覧履歴、インターネット一時ファイル、Cookie など)を残したくない人 Microsoft Edgeの閲... -
Windows11
【Microsoft Edge】Webサイトの広告をブロックする方法
こんな人にオススメの記事です Webサイトの広告を非表示にしたい人 通信量をなるべく抑えたい人 ウェブサイトを閲覧中に、突然表示される煩わしい広告やポップアップに... -
Windows11
Windows11でIE(インターネットエクスプローラー)を起動する方法
こんな人にオススメの記事です IE(インターネットエクスプローラー)を使う必要がある人 Windows11でIE(インターネットエクスプローラー)を起動する方法を知りたい人... -
Windows11
Windows11で複数のファイルをまとめて印刷する方法
こんな人にオススメの記事です 複数種類のファイル(PDFやWordなど)をまとめて印刷したい人 一種類のファイルをまとめて印刷したい方 大量のファイルを一括で印刷した... -
Windows11
MACアドレスの調べ方(Windows、iPhone)
こんな人にオススメの記事です ネットワーク設定を理解したい人 セキュリティ対策としてMACアドレスを確認したい人 家庭内や職場で複数のデバイスを管理しているシステ... -
Windows11
メモ帳で文字コードをShift-JISやUTF-8に変換する方法
こんな人にオススメの記事です テキストファイルが文字化けして困っている人 送られてきたファイルの文字コードを修正して正しく表示したい人。 Shift-JISが必要なファ... -
Windows11
【Windows11】ネットワークドライブの割り当てと切断方法
こんな人にオススメの記事です Windows11でネットワークドライブを新規で割り当てたい人 Windows11でネットワークドライブを切断(削除)したい人 Windows11でコマンド... -
Windows11
このデバイスにドライバーを読み込めません ene.sysが突然表示される場合の対処法
こんな人にオススメの記事です パソコンを起動すると「このデバイスにドライバーを読み込めません」と突然表示されるようになった人 ene.sysというドライバーに対して「...
最後までご覧いただきありがとうございました。
このサイトは情シスマンが半径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
コメント