デスクトップやサーバーにどのソフトウェアがインストールされているかを把握しておくことは重要であり、システム管理者にとっては常識です。インストール日、バージョン、インストールした人などの情報が必要です。こういったインベントリ情報は、どれを新しいバージョンにアップグレードする必要があるのかを確認するのにも役立ちます。Windows では、デフォルトでこれらの情報の一部を取得できますが、すべてではありません。
ソフトウェアの詳細なインベントリ情報を得るのに、Chocolatey を利用することができます。私見では、Chocolatey のパワーは CLI(コマンドラインインタフェース)にあります。このブログでは、Chocolatey を使って Windows マシンにインストールされているソフトウェアを監査する方法を説明したいと思います。
Chocolatey パッケージの [プログラムと機能] を表示
Chocolatey はパッケージを Windows とは別に管理します。これは初心者にとって非常に重要な概念です。Chocolatey でインストールするパッケージは通常、[プログラムと機能] に表示されますが、すべてがそうとは限りません。Chocolatey を使わずにインストールしたものは、デフォルトでは表示されません。いったん Chocolatey を使うようにしたら、Chocolatey 以外ではソフトウェアをインストールしないようにすることが大切です。そうしないと、監査とアップグレードが難しくなります。
ソフトウェアの中には、[プログラムと機能] に表示されないものもあります。実際にはシステムに「インストール」されていないからです。典型的な例は、単一の実行可能ファイルのみで構成される端末ソフトウェアである PuTTY です。PuTTY は、インストーラを走らせなくても、ただダウンロードして実行できます。では、どうすれば、それらを [プログラムと機能] に表示することができるでしょうか?Chocolatey を使います。
次のように設定すると、すべての Chocolatey パッケージが [プログラムと機能] に表示されます。
choco feature enable -n showAllPackagesInProgramsAndFeatures
PuTTY も、私の Windows 10 コンピュータに表示されます
パッケージ監査情報の表示
私が重宝してよく使うコマンドの1つは、choco list です。システムにインストールされているパッケージを表示できるだけでなく、リポジトリにある利用可能なパッケージも表示できます。便利なパラメータとして、インストール時間、インストールしたユーザー、Active Directory ドメイン、ソフトウェアバージョンなどといった詳細な情報を提供する -audit があります。
PS C:\> choco list -lo --audit
Chocolatey v0.10.11 Business
7zip 18.5 User:dfrancis-adm Domain:MYCOMP Original User:dfrancis-adm InstallDateUtc:2018-05-03 20:55:12Z
7zip.install 18.5 User:dfrancis-adm Domain:MYCOMP Original User:dfrancis-adm InstallDateUtc:2018-05-03 20:55:12Z
adobe-acrobat-xi-pro 11.0.00 User:admin Domain:DOMAIN Original User:hermes InstallDateUtc:2018-04-18 10:59:12Z
autohotkey.portable 1.1.28.02 User:dfrancis-adm Domain:MYCOMP Original User:dfrancis-adm InstallDateUtc:2018-04-20 16:22:04Z
bind-toolsonly 9.12.1 User:dfrancis-adm Domain:MYCOMP Original User:dfrancis-adm InstallDateUtc:2018-05-18 12:25:40Z
ここで使っているパラメータ -lo は、ローカルにインストールされたパッケージを見るという意味です。
関連ブログ: Chocolatey パッケージの社内リポジトリ設定
Windows にインストールされたすべてのパッケージを Chocolatery で表示
前述のように、Chocolatey は Windows とは別にパッケージを管理しますが、Chocolatey を使わずにインストールされた、または Chocolatey を導入する前にインストールされたソフトウェアをチェックしたい場合はどうすればいいでしょうか?そのためには、choco list に -include-programs パラメータをつけます。
PS C:\> choco list -lo --include-programs
このコマンドを使用すると、下のようにソフトウェアの2番目のリストが表示されます。これらは、Chocolatey を使わずにインストールされたパッケージです。
ABBYY FineReader 11|11.11.194
AD Replication Status Tool 1.0|2.6.60913.0
ADManager Plus Free Tools|4.0
古くなったパッケージの検出
Chocolatey の最も優れた機能の1つは、アップグレードが必要なパッケージをすばやく検出し、アップグレードできることです。ここでは、古くなったパッケージの検出だけを説明します。使うコマンドは、choco outdated です。
PS C:\> choco outdated
Chocolatey v0.10.11 Business
Outdated Packages
Output is package name | current version | available version | pinned?
autohotkey.portable|1.1.28.02|1.1.29.01|false
bitvise-ssh-client|7.39|7.43|false
calibre|3.25.0|3.26.1|false
chocolatey.extension|1.12.11|1.12.12|false
citrix-receiver|4.10.1|4.12|false
上記を見てわかるように、すべての古くなったパッケージの名前、現在のバージョン、利用可能なバージョン、ピン付けされているかどうか、を確認できます。パッケージのピン付けは、ユーザーがパッケージをアップグレードしないことを指定したことを意味します。
まとめ
Chocolatey でパッケージを管理することで、ソフトウェアの監査とアップグレードを改善できることは明らかだと思います。Windows にネイティブでは存在しない、詳細なインベントリ情報が獲得できます。
Dan Franciscus
Dan Franciscus is a systems engineer and VMware Certified Professional (VCP) specializing in VMware, PowerShell, and other Microsoft-based technologies. You can reach Dan at his blog (http://www.winsysblog.com/) or Twitter at @dan_franciscus.