wmicコマンドが利用できない場合の代替コマンドGet-CimInstance

目次

スポンサードリンク

長年Windows管理の現場で活躍してきた wmic.exe ですが、 Windows 11バージョン24H2ではデフォルトで無効となり「非推奨」という扱いです。また、WMICはWindows 11バージョン25H2で完全に削除される予定です。

Windows 11バージョン25H2でwmicコマンドを実行すると、以下のように表示されると思います。

'wmic' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。

または、

wmic : 用語 'wmic' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。

と表示されます。

wmic の代替コマンド「Get-CimInstance」

wmic の多くの機能、特に、WMI (Windows Management Instrumentation) の情報を取得するために使われていた wmic の機能は、主に Get-CimInstance というPowerShellコマンドレットに置き換わりました。

wmic とは? 非推奨になった理由

wmic は「Windows Management Instrumentation Command-line」の略で、Windowsのシステム管理情報(WMI)にアクセスするための古いコマンドラインツールです。

wmic コマンドが非推奨になった主な理由は、より強力で柔軟な後継技術である PowerShellが登場したためです。

wmic コマンドは結果を文字列として出力します。そのため、例えば、「Cドライブの空き容量」を取得しても、それは単なる「数字の文字列」です。スクリプトでその値を使って計算などを行うには、文字列を解析して数値に変換する面倒な処理が必要でした。

後継のGet-CimInstanceコマンドは結果をオブジェクトとして出力するため、すぐに計算や比較に使えるといったメリットがあります。

wmic と PowerShell コマンドの比較

wmic コマンドと同じことをPowerShellで実行する場合の代替コマンドを整理していきます。

PCのシリアル番号を確認するコマンド

従来の wmicコマンドでは以下のように実行していました。

C:\\Users\\username\> wmic bios get serialnumber

PowerShell では以下のように実行します。

PS C:\\Users\\username\> (Get-CimInstance Win32\_BIOS).SerialNumber

7FW4H64

PCのモデル名(製品名)を確認するコマンド

従来の wmic コマンドでは以下のように実行していました。

C:\\Users\\username\> wmic csproduct get name

Name

Latitude 5320

PowerShell では以下のように実行します。

PS C:\\Users\\username\> (Get-CimInstance Win32\_ComputerSystem).Model

Latitude 5320

OSのバージョン情報を確認するコマンド

従来の wmic コマンドでは以下のように実行していました。

C:\\Users\\username\> wmic os get Caption, Version

Caption                                Version

Microsoft Windows 11 Pro               10.0.22631

PowerShell では以下のように実行します。

PS C:\\Users\\username\> Get-CimInstance Win32\_OperatingSystem | select Caption, Version

Caption                    Version

\-------                    \-------

Microsoft Windows 11 Pro   10.0.22631

CPUの情報を確認するコマンド

従来の wmic コマンドでは以下のように実行していました。

C:\\Users\\username\> wmic cpu get Name

Name

11th Gen Intel(R) Core(TM) i5-1145G7 @ 2.60GHz

PowerShell では以下のように実行します。

PS C:\\Users\\username\> (Get-CimInstance Win32\_Processor).Name

11th Gen Intel(R) Core(TM) i5-1145G7 @ 2.60GHz

物理メモリの総容量(バイト単位)を確認するコマンド

従来の wmic コマンドでは以下のように実行していました。

C:\\Users\\username\> wmic computersystem get TotalPhysicalMemory

TotalPhysicalMemory

17021673472

PowerShell では以下のように実行します。

PS C:\\Users\\username\> (Get-CimInstance Win32\_ComputerSystem).TotalPhysicalMemory

17021673472

ディスクの空き容量(ローカル固定ディスク)を確認するコマンド

従来の wmic コマンドでは以下のように実行していました。

C:\\Users\\username\> wmic logicaldisk where DriveType=3 get DeviceID, FreeSpace

DeviceID  FreeSpace

C:        123456789012

D:        987654321098

PowerShell では以下のように実行します。(DriveType=3 はローカルディスクを示します)

PS C:\\Users\\username\> Get-CimInstance Win32\_LogicalDisk \-Filter "DriveType=3" | select DeviceID, FreeSpace

DeviceID   FreeSpace

\--------   \---------

C:         123456789012

D:         987654321098

いくつか代表的な例を比較表にまとめました。

目的 従来の wmic コマンド ✅ 代替の PowerShell コマンド (Get-CimInstance)
PCのシリアル番号 wmic bios get serialnumber (Get-CimInstance Win32_BIOS).SerialNumber
PCのモデル名 wmic csproduct get name (Get-CimInstance Win32_ComputerSystem).Model
OSの情報 wmic os get Caption, Version Get-CimInstance Win32_OperatingSystem
CPUの情報 wmic cpu get Name Get-CimInstance Win32_Processor
メモリの総容量 wmic computersystem get TotalPhysicalMemory (Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory
ディスク空き容量 wmic logicaldisk where DriveType=3 get DeviceID, FreeSpace Get-CimInstance Win32_LogicalDisk -Filter “DriveType=3”

まとめ

wmic コマンドは最新のWindowsでは非推奨になり、利用できなくなっていきます。今後は代替コマンドとして PowerShellGet-CimInstance コマンドを使用していきましょう。これからのWindows管理はPowerShellが必須です。この機会によく使うコマンドだけでもPowerShellに置き換えていきましょう。


PowerShellの基礎を一通り学べるおすすめ書籍
Windows環境で開発やシステム管理を行うエンジニアにとって、PowerShellの知識は非常に重要なスキルセットです。こちらの書籍はサンプルも豊富で手元に置いておきたい一冊です。

コマンドプロンプトのポケットリファレンス:Windows11対応版