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では非推奨になり、利用できなくなっていきます。今後は代替コマンドとして PowerShell の Get-CimInstance コマンドを使用していきましょう。これからのWindows管理はPowerShellが必須です。この機会によく使うコマンドだけでもPowerShellに置き換えていきましょう。
PowerShellの基礎を一通り学べるおすすめ書籍
Windows環境で開発やシステム管理を行うエンジニアにとって、PowerShellの知識は非常に重要なスキルセットです。こちらの書籍はサンプルも豊富で手元に置いておきたい一冊です。
コマンドプロンプトのポケットリファレンス:Windows11対応版