【PowerShell】プログラムと機能にあるアプリの一覧を表示する

PowerShell

【PowerShell】プログラムと機能にあるアプリの一覧を表示する

こんにちは!SE ブログの相馬です。

 

 

 

今回は、Windows 10 のプログラムと機能に一覧表示されているアプリケーション(プログラム)を PowerShell を使い、データとして出力してみました。以降、アプリケーションは長いのでアプリと略します。

 

 

どういう用途で使えるかと言うと、既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

 

 

また、既存の PC 分のパラメータシートが無い場合には、この方法を使って素早く作成する事ができますので構築時に役に立つでしょう。

 

 

 

プログラムと機能に表示されるアプリ

 

 

まず、PC にインストールしたアプリは、[コントロールパネル] 内にある、[プログラムと機能] から確認する事ができます。

 

 

ここで強調しておきたいのは、[プログラムと機能] に表示されるのはインストールした分のみであり、ビルトインされたアプリは表示されません。

 

 

 

ビルトインされたアプリは PowerShell で確認する事ができます。アンインストールなど含めて、詳細は以下の記事で説明しております。

 

 

 

 

 

 

レジストリを見てアプリの一覧を確認する

 

 

それでは、実際にアプリの一覧を PowerShell で取得する際に、どの方法で取ったら良いのでしょうか。

 

 

いくつかあるのですが、ここで予め説明したいのは、[プログラムと機能] と全く同じ情報を取得する事は困難だという事です。ネットで色々調べてみましたが、全く同じ情報を取得しているスクリプトは見当たりませんでした。

 

 

その中でも一番精度の高い方法としては、レジストリの情報を取得する事だという事が分かりました。以下、レジストリの場所になります。

 

 

スクリプトでは、2 つある上のほうを使えば良いでしょう。こっちのほうがアプリの情報が多いからです。

 

 

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

 

 

ちなみにスクリーンショットを取っておきました。

 

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall の場合

 

 

 

 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall の場合

 

 

 

 

PowerShell で表示する

 

 

それではレジストリで取得した情報を元に、コマンドレットを使い情報を絞って表示させてみました。

 

 

リストにはアプリ名、バージョン、作成元が含まれておりますが、含まれていないものもあるかもしれません。確かに OneNote が表示されていませんね。OneNote はインストールしたアプリではあるのですが、レジストリには無いので取得ができないようです。こういうは目検で確認していくしかないかもしれません。

 

 

PS C:\Users\user1> Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | `
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | `
Format-Table

実行結果

DisplayName                                                    DisplayVersion Publisher                                                    InstallDate
-----------                                                    -------------- ---------                                                    -----------
                                                                                                                                                      
FavBinEdit 1.2.3                                               1.2.3          wabisabi                                                     20190203   
                                                                                                                                                      
WinPcap 4.1.3                                                  4.1.0.2980     Riverbed Technology, Inc.                                               
Wireshark 2.6.5 64-bit                                         2.6.5          The Wireshark developer community, https://www.wireshark.org            
Google Toolbar for Internet Explorer                           1.0.0          Google Inc.                                                  20190127   
Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148 9.0.30729.4148 Microsoft Corporation                                        20180825   
Google Toolbar for Internet Explorer                           7.5.8231.2252  Google Inc.                                                             
Google Update Helper                                           1.3.33.23      Google Inc.                                                  20190127   
Microsoft Visual C++ 2017 Redistributable (x64) - 14.12.25810  14.12.25810.0  Microsoft Corporation 

 

 

 

ちなみにテキストで出力してみました。こうすればパラメータシートの元として使う事ができますね。

 

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | `
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | `
Format-Table –AutoSize > C:\Temp\InstalledPrograms.txt

 

 

 

まとめ

 

 

いかがでしょうか。PowerShell で [プログラムと機能] にあるインストールしたアプリの一覧を PowerShell で表示してみました。

 

 

やってみて思ったのは、最初は簡単に全量と表示できるのかと思ったのですが、そんなに甘くはなかった事が分かりました。(汗)

 

 

とはいえ、レジストリにアプリの一覧の情報がある事が分かりましたし、そこから Select-Object で情報を絞れば一覧が出せる事が分かったので良かったです。

 

 

それでは最後までお読みいただきありがとうございました!

 

 

 

  • この記事を書いた人

そーまん

セキュリティエンジニアやってます。
ブログ歴3年。PVは月15万PV程度。
趣味はボクシング、筋トレ、登山です。
穏やかで人見知りでマイペースな人です。

人気記事

1

こんにちは!SE ブログの相馬です。       今回は、PC に適用されている GPO を確認する方法について書きました。     グループポリシー ...

2

こんにちは!SE ブログの相馬です。       今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは ...

3

こんにちは!SE ブログの相馬です。       今回は、グループポリシーを使って、特定のコンピューターに対して、ドメインユーザーに Administrators 権限を ...

4

こんにちは!SE ブログの相馬です。       今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 ...

5

こんにちは!SEブログの相馬です。       今回は、ユーザープロファイルを削除する方法について書いてみました。     1 台の PC を複数人で ...

6

こんにちは!SE ブログの相馬です。       今回は、繰り返し文について書いてみました。PowerShell では他のプログラミング言語同様、繰り返し処理を行うことが ...

7

コマンドを使って CPU とメモリの使用率をデータで取得してみましたので、例えば PC のトラブルシューティングで問題を再現させる際にデータを取得しておくと、原因の特定に役立つ場合があるかと思います。

8

既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

9

企業で多くの GPO が適用されている環境では、PC に GPO が適用されなかったりする問題が発生する場合があるかと思います。その中でも、コンピューターの構成またはユーザーの構成のどちらかで、...

10

こんにちは!SE ブログの相馬です。       今回は、Windows Server 2016 で NTP サーバーと同期する方法について書きました。   & ...

-PowerShell
-,