Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
こんにちは!そーまんです。
今回は、Windows 10 のプログラムと機能に一覧表示されているアプリ(プログラム)を PowerShell を使い、データとして出力してみました。
どういう用途で使えるか考えてみましたところ、例えば以下のような場合で使えるのではないかと思います。
用途
- 既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になる
- 既存の PC 分のパラメータシートを作成する
プログラムと機能に表示されるアプリ
まず、PC にインストールしたアプリは、「コントロールパネル」 内にある、「プログラムと機能」 から確認する事ができます。
ここで強調しておきたいのは、「プログラムと機能」 に表示されるのは手動でインストールした分のみであり、ビルトインされたアプリは表示されないという点です。
ビルトインされたアプリは PowerShell で確認する事ができます。アンインストールなど含めて、詳細は以下の記事で説明しております。
レジストリを見てアプリの一覧を確認する
それでは、実際にアプリの一覧を PowerShell で取得する際に、どの方法で取ったら良いのでしょうか。
いくつかあるのですが、ここで予め説明したいのは、「プログラムと機能」と全く同じ情報を取得する事は困難だという事です。ネットで色々調べてみましたが、全く同じ情報を取得しているスクリプトは見当たりませんでした。
その中でも一番精度の高い方法としては、レジストリの情報を取得する事だという事が分かりました。以下、レジストリの場所になります。
スクリプトでは、2 つある上のほうを使えば良いでしょう。こっちのほうがアプリの情報が多いからです。
1 2 |
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
ちなみにスクリーンショットを取っておきました。
1 |
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall |
1 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
PowerShell で表示する
それではレジストリで取得した情報を元に、コマンドレットを使い情報を絞って表示させてみました。
リストにはアプリ名、バージョン、作成元が含まれておりますが、含まれていないものもあるかもしれません。
確かに OneNote がインストールされておりますが表示されていません。OneNote はインストールしたアプリではあるのですが、レジストリには無いので取得ができないようです。こういったコマンドでも取得できない分は「プログラムと機能」と見比べて目検で確認していくしかないかもしれません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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 |
ちなみにテキストで出力してみました。こうすればパラメータシートの元として使う事ができますね。
1 2 3 |
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 で情報を絞れば一覧が出せる事が分かったので良かったです。
それでは最後までお読みいただきありがとうございました!