WMI(wmic)を使ってシステムのディスクサイズや空き領域などをリモートから調査するTech TIPS

PCを管理するために、ディスクのサイズや空きサイズなどを調べたいことがあるだろう。多くのリモートPCを調査するなら、コマンドプロンプト上で動作するCUIのツールを使うと便利だ。wmicコマンドを使ってディスクの状態を調べる方法をまとめておく。

» 2018年08月09日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 7/Windows 8.1/Windows 10/Windows Server 2008 R2/Windows Server 2012/Windows Server 2012 R2/Windows Server 2016


 コンピュータの運用管理などを行う場合、そのコンピュータにどのようなディスクドライブがあって、そのサイズや空き容量がいくらか、ということを知りたいことがある。

 ローカルのPCならエクスプローラで簡単に確認できるが、記録として残したり、他のアプリケーションなどに結果を貼り付けたりするのならば、CUIのツールでテキストデータとして情報を取得できると便利だ。またCUIのツールなら、調査対象のPCの台数が増えてもほとんど手間は変わらない。接続先サーバを変えてコマンドを繰り返すだけだからだ。

 以下のTIPSでは、PowerShellを使って、リモートPCのディスクサイズや空き領域サイズを調査する方法を紹介している。

 通常はPowerShellでも構わないが、OSのバージョンや環境によっては利用できないことがある。そこで本TIPSではWMI(wmic)コマンドを使う方法を紹介する。

WMI(wmic)でディスク情報を取得する

 「WMI(Windows Management Instrumentation)」は、Windowsシステムを管理するための共通システムインタフェースであり、システム状態の取得から各種パラメーターの設定まで、さまざまな制御を行うことができる。前述のPowerShellで実行しているコマンドレットも下位ではこのサービスを呼び出している。

 WMIを制御するコマンドとしてwmic.exeがあるが、WMIやwmicの基本的な使い方については以下のTIPSなどを参照していただきたい。コマンドプロンプトを開いて、「wmic volume」や「wmic logicaldisk get name,size,freespace」などのように利用する。

wmicでディスクやボリュームの情報を取得する wmicでディスクやボリュームの情報を取得する
wmic volumeやwmic logicaldiskを実行すると、ディスクやボリュームの情報を取得できる。ただしデフォルトでは大量の結果が表示されて見づらいので、後述の方法で要約表示させるとよい。

 WMIでディスク関連の情報を取得するには以下のようなコマンドを使用する。

コマンド 用途
wmic volume ローカルディスク上に存在する全ての論理ボリューム(システムや回復ボリュームも含む)の管理
wmic logicaldisk ネットワークドライブも含めた、ユーザーから見える割り当て済みドライブの管理
wmic diskdrive 物理ディスクの管理
wmic partition ディスクパーティションの管理
ディスク/ボリューム関連のwmicコマンド
wmicに続けて、WMIで取得/操作したい対象オブジェクト名(のエイリアス)を指定する。ディスク関連ではこれらの名前が利用できる。

 wmicに続けて指定する「volume」や「logicaldisk」は、実際にはWMIで操作する対象となるオブジェクトの名前(を短く分かりやすくしたエイリアス名)である。指定できるエイリアス名の一覧は「wmic /?」で確認できる。

 エイリアス名に続けて、実行したい操作コマンド(動詞)を指定する。「list」や「get」「set」「call」などがあるが、情報を表示させたいだけなら「list」を指定する。

 コマンドを省略すると、デフォルトではlistが実行されるので、単に「wmic volume」や「wmic logicaldisk」を実行すると、それらのコンポーネントに関する情報が表示されることになる。

 ただしこれだけだと非常に多くのデータが表示されて分かりづらいので、「list brief」や「list status」などのオプションを付けて表示する項目を制限するとよい。指定可能なlistのオプションの意味は「wmic volume list /?」「wmic logicaldisk list /?」で確認できる。

list briefで表示する情報を制限したところ list briefで表示する情報を制限したところ
単にwmic volumeとすると、大量の結果が表示されるので、人間が見る場合はlist briefやlist statusで要約を表示させるとよい

出力形式を変更する

 wmicコマンドの出力は上記の例のように、画面上で整列されて表示されている。だが他のアプリケーションでも利用するなら、CSVやXML、HTMLの表形式などの方が便利だろう。出力形式を変更するには、コマンドの最後に「/format:csv」や「/format:xml」「/format:htable」などを追加すればよい。指定できるフォーマット形式の一覧は、例えば「wmic volume list brief /format /?」とすると確認できる(デフォルトは「/format:table」に相当)。さらに結果をクリップボードにコピーしたければ、パイプ記号とclipコマンドを使って、「wmic 〜 | clip」のようにする。

CSV形式で出力する CSV形式で出力する
最後に「/format:csv」を付けると、CSV形式で出力できる。

特定の項目だけを表示する

 ドライブ名と総サイズ、空き領域サイズだけを表示したい、といった場合は、listの代わりにgetを使い、表示したい項目(プロパティ)名を指定すればよい。複数の項目がある場合はカンマで区切って列挙する。getで列挙可能な項目の一覧は「wmic logicaldisk get /?」「wmic volume get /?」のようにすれば確認できる。

表示項目の選択 表示項目の選択
特定のいくつかの項目だけを表示したければ、getで表示したい項目名を列挙する。

ローカルドライブや特定のドライブだけを表示する

 「wmic logicaldisk」は、デフォルトではネットワークドライブも表示するが、これを変えて、ローカルの物理ドライブだけを表示させたければ、「DriveType」プロパティが「3(=固定ディスクディスク)」となっている項目だけを選べばよい。このような選択をするために、WMIには「WQL (SQL for WMI)」という機能/構文が用意されている。SQLのWhere句のような方法でさまざまな条件を指定できる(logicaldiskだけでなく、どのコマンドにも組み合わせ可能)。

 例えば、DriveTypeが「3」のものだけを表示させるには、Where句を使って「wmic logicaldisk where drivetype=3 list brief」とする。

Where句で表示対象を限定させる Where句で表示対象を限定させる
特定の値を持つ項目のみを表示させたければ、Where句を使って条件を指定する。

 複数の条件がある場合は、ORやANDなどを組み合わせて「wmic logicaldisk where 'name="c:" or name="f:"' list brief」のように指定する。

複数の条件がある場合のクエリ式 複数の条件がある場合のクエリ式
複数の条件がある場合は、ANDやORで連結した条件をwhere句に指定する。whereの条件部分は ( ) か、シングルクォートか、ダブルクォート記号で囲む。

WMIでリモートのPCを調査するには?

 WMIでリモートPCのボリュームの状態を調査するには、「/node:<サーバ>」オプションを付けて実行する(注:接続先は同じActive Directoryに属するコンピュータとする。非ドメインネットワークの場合はファイアウォールやアクセス権、各種セキュリティ設定などへ対応が必要になるので、ここでは触れない)。

wmicでリモートPCのディスクやボリュームの情報を取得する wmicでリモートPCのディスクやボリュームの情報を取得する
wmicに/node:〜オプションを付けると、リモートのシステムの情報を取得できる。

 複数のリモートPCを調査するなら、「/node:〜」に複数のサーバ名をカンマで区切って列挙するか、コンピュータ名の一覧を記録したテキストファイルを用意して(コンピュータ名は1行ずつ改行して記入するか、カンマで区切って並べること)、「wmic /node:@list.txt volume」のようにして実行する。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。