[Script] | ||||||||||||||
WMIを使うスクリプトを簡単に作成する
|
||||||||||||||
|
解説 |
WMI(Windows Management Instrumentation)とは、WBEM(Web-based Enterprise Management)の標準仕様に従ってマイクロソフトが実装したWindowsシステムを管理するためのインターフェイスである。WSHスクリプトなどから呼び出すことで、Windowsの管理などを実行できる。Windows 2000以降のNTカーネルで稼働するWindows OSには、このWMIサービスが標準搭載されている。具体的には、CPU使用率やASP.NETの動作状況、各種I/Oやネットワーク・インターフェイスの状態などを確認し、設定することが可能だ。
しかしWMIは豊富な機能を持ち、メソッドやプロパティの数も膨大なので、スクリプトなどから利用するのは容易ではない。例えば、WMIのインターフェイスを利用してProcessorPerformanceの値を調査するWSHスクリプト(VBS)は以下のようになる(これは実際には、後述するツールで生成したもの)。
arrComputers = Array("TEST-SERVER01","TEST-SERVER02","TEST-SERVER03") |
詳しくは説明しないが、このスクリプトでは、複数のコンピュータ(TEST-SERVER01〜TEST-SERVER03)に対してWMIオブジェクトを取得し、ExecQueryメソッドで状態を取得している。スクリプトを作成するには、このようにWMIで利用できるメソッドやプロパティ、クエリ(問い合わせ)などについて精通する必要がある。
これに対し、クラスやプロパティを記憶していなくても、それらを一覧から選択することで、スクリプトのひな型を自動生成してくれる「WMI Code Creator v1.0」というツールをマイクロソフトが無償公開している。利用できるのは英語版のみだが、メッセージが英語であることを除けば、日本語環境でも問題なく利用できる。
このツールは、WMIを利用できるWindows 2000、Windows XP、Windows Server 2003で.NET Framework 1.1以上をインストールしておけば利用できる。ツールとしての主な仕様は次のとおりである。
対応OS | Windows 2000、Windows XP、Windows Server 2003 |
必要環境 | .NET Framework 1.1以上 |
作成できるソースコードの言語 | C#、Visual Basic Script、Visual Basic.NET |
配布ファイル名 | WMICodeCreator.zip |
含まれるファイル | WMICodeCreator.exe(実行ファイル) |
WMICodeCreator.cs(C#ソースコード) | |
EULA_WMI_CODE_CREATOR.rtf(ライセンス許諾書) | |
WMI Code Creator v.1.0の主な仕様 | |
WMI Code Creatorは.zipファイルで提供されており、配布ファイルからWMICodeCreator.exeを任意のフォルダに展開すれば、インストール不要で利用できる。 |
|
ソースコードのひな型作成以外にも、WMI Code Creatorには、スクリプト作成を簡略化してくれるさまざまな機能がある。なおWSHの詳細については、関連記事を参照されたい。
操作方法 |
WMI Code Creatorを以下のダウンロード・センターから入手したら、.zipファイルに含まれるWMICodeCreator.exeのみを任意のフォルダに配置しておく。
WMI Code Creatorを利用するには、ローカル・コンピュータ上のWMIサービスが起動している必要がある。さらに、リモートのコンピュータを対象としたスクリプトを作成する場合には、対象となるコンピュータのWMIサービスも起動している必要がある点に注意が必要だ。WMICodeCreator.exeを起動すると、初期化の後、次のような画面となる。
WMI自体が幅広い機能を持っているので、WMI Code Creatorも幅広い機能をサポートしている。具体的には、(1)クエリでWMIが持っているデータを取得する、(2)WMIのメソッドを実行する、(3)WMIのイベントを取得するスクリプトを作成できる。また、WMIの幅広い機能を調べる辞書的な使い方もできる。ただし、WMI Code Creatorを実行しているコンピュータのWMI名前空間に基づいて動作するため、スクリプトでの操作対象がリモートのコンピュータの場合、環境の違いから、必ずしもサポートされない選択が可能になる場合があるので注意すること。
ここでは例として、豊富な機能の中から、リモートの複数コンピュータでCPUがアクティブかどうかを調べるスクリプトを生成してみる。
ターゲット・コンピュータを指定する | ||||||
リモートの複数コンピュータを対象としたスクリプトを作成するので、デフォルトの設定であるLocal ComputerからGroup of Remote Computersに変更する。 | ||||||
|
[Group of Remote Computers]を選択すると、次のようなダイアログが表示されるので、対象となるコンピュータ名を入力しておく。
リモートのコンピュータを指定する |
複数台のリモートのコンピュータを対象としたスクリプトを作成する場合は、表示されたダイアログのフォームに改行区切りでコンピュータ名を記述する。 |
次に[Namespace]のリストで「root\WMI」を選択する。
名前空間を指定する |
[Namespace]の項目は、筆者の環境ではデフォルトだと「root\CIMV2」になっている。ここでは、「root\WMI」を選択する。例えば、Services for UNIXを実行している環境では「root\SFUAdmin」という名前空間が選択できるようになる。実際の作業では、必要な名前空間から利用できるプロパティやメソッドを選択していけばよい。 |
次に、選択した「root\WMI」名前空間にあるクラスから「ProcessorPerformance」を選択する。
クラスを選択する |
筆者の環境でroot\WMI名前空間を選択すると、自動的に836個のクラスが検索された。検索されたクラスが反映されたプルダウン・メニューからProcessorPerformanceクラスを選択する。 |
すると、プロパティが14個見つかるので、そこから「Active」を選択するとスクリプトのソースコードが自動的に生成される。生成されたソースコードは、メモ帳に貼り付けたり、Visual Studioを使ってほかのコードの一部として使ったり、テスト実行して結果を確認したりできる。
プロパティを選択する | |||||||||||||||
プロパティから「Active」を選択すると、ソースコードが自動的に生成される。生成されたコードは、メモ帳に貼り付けたりVisual Studioを使ってほかのコードの一部として使ったり、テスト実行して結果を確認したりできる。 | |||||||||||||||
|
このようにWMI Code Creatorを利用すれば、ヘルプの検索作業を減らし、つまらない入力ミスを大幅に減らして、スクリプト作成を効率化できる。WMIを利用するスクリプトを作成するときには、ぜひ利用してみるとよいだろう。
この記事と関連性の高い別の記事
- PowerShellでWMIを利用するためのコードを生成する(TIPS)
- WindowsでWMIとwmicコマンドを使ってシステムを管理する(基本編)(TIPS)
- ログオンの失敗をメールで通知する(TIPS)
- wmicコマンドでイベント・ログを表示する(TIPS)
- グループ・ポリシーを使って、コンピュータの終了時にコマンドを実行する(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|