treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

WMICを使ってアンインストールをやってみる

かなり今更なWMICという技術ですが、ちょっと検証してみることがあったのでご報告です。
Windows11の最新バージョンでは既に非推奨となっている機能なのでご注意ください。

始めに

WMICコマンドは過去のWindowsバージョンでWindowsの管理に使われていたコマンド(とサブコマンドのセット)です。
現在ではWMICコマンドで取得可能なWMI情報はPowerShellの「Get-WmiObject」を使うことがおおいためWMICコマンドの出番は少なくなっています。

WMICとは

Windows Management Instrumentation CommandLineの略で、頭文字を取ってWMICと呼ばれています。
Windows Management Instrumentation(=WMI)の情報を取得したり、それらの情報を元にWindowsの管理を実施するコマンドベースのインターフェースがWMICです。

コマンドラインの有用性が見直しされた以前の世代のWindowsで、Windowsそのものを管理する(情報収集や設定実施などに使う)ために搭載された機能です。

■WMIC: WMI コマンドライン ユーティリティ
https://learn.microsoft.com/ja-jp/windows/win32/wmisdk/wmic

■Windows Management Instrumentation コマンドラインの使用
https://learn.microsoft.com/ja-jp/previous-versions/windows/it-pro/windows-server-2003/cc779482(v=ws.10)

ただし、WMICコマンドはWindows11で非推奨機能となっており、24H2の新規インストール時には既定では無効化(有効になっていないのでWMICコマンドがない状態)されています。23H2以前のWindows11から24H2へアップグレードした環境ではWMICコマンドは利用可能です。今回はWMICコマンドが利用可能な環境であることが前提となります。

WMICのコマンドプロンプトを開く

コマンドプロンプトを開いて「wmic」と入力します。

C:\temp>wmic
wmic:root\cli>

コマンドプロンプトが「wmic:root\cli>」となれば、WMICのコマンド受け付けができる状態になっています。

このプロンプト「wmic:root\cli>」に続けてコマンドを入力していきます。

WMICコマンドでアプリケーション一覧を確認する

「wmic:root\cli>」のプロンプトで以下のように入力します。

product get name

するとインストール済のアプリケーションのリストが表示されます。

ただ、全部のアプリケーションが表示されるわけではなさそう。

PowerShellで同じリストを表示させるときは、

Get-WmiObject Win32_Product | Select-Object Name,Vendor,Version,Caption

と入力して実行します。

こっちの方が表示される情報が多くて、使える情報が多いかも。

WMICコマンドでPCのシリアル番号を調べる

PCのシリアル番号を収集するときは

wmic:root\cli>csproduct get identifyingnumber

とします。
「IdentifyingNumber」に続いてPCのシリアル番号が画面表示されます。

PowerShellで同じ情報を表示させるときは、

Get-WmiObject -Class Win32_bios | Select SerialNumber

と入力して実行します。

「Get-WmiObject -Class Win32_bios」はBIOS情報を一括表示するコマンドレットです。

WMICコマンドでアンインストール

前述の「product get name」で情報が取得できるアプリケーションならWMICコマンド経由でのアンインストールが可能です。テスト環境でやってみました。

この環境で、

「product get name」で取得できる、

Adobe Readerをアンインストールしてみます。

アンインストールは、
「product where name="Adobe Acrobat Reader - Japanese" call uninstall」
と入力します。
「name=」に続ける名前は、「product get name」で取得したアプリケーションの名称をコピー&ペーストで貼り付けし、それに続けて「call uninstall」でアンインストールを指示できます。

また、「product get name」までは通常のコマンドプロンプトで実行可能ですが、アンインストールは「管理者:コマンドプロンプト」でのWMICコマンド実行が必要になります。別途コマンドプロンプトを管理者として実行し、WMICコマンドを実行します。

コマンドを実行すると、

このように、
「(\\%COMPUTERNAME%\ROOT\CIMV2:Win32_Product.IdentifyingNumber="{%アプリケーションのGUID%}",Name="Adobe Acrobat Reader - Japanese",Version="25.001.20432")->Uninstall() を実行しますか(Y/N/?)?」

と表示されるので、「Y」と入力してEnterキーを押下します。

しばらくすると、

このような画面が表示され、アンインストール処理が完了ししました。どうやら「ReturnValue = 0;」で終了を判断するようです。権限が不足した通常のコマンドプロンプトで実行したところ、

※失敗の場合の画面

このように、「ReturnValue = 1603;」で終了しており、実際のアンインストールは実行されていませんでした。(権限不足で失敗と考えられます。)

コントロールパネル「プログラムと機能」画面(appwiz.cpl)から確認したところ、

インストールされていたAdobe Readerをアンインストールできていることが確認できました。

いままでは「Uninstall String」を使ったアンインストールの実行しかやったことがなかったので、WMICを使った別の角度でのアンインストールというのは初めてやってみました。