Skip to main content
評価してください: 

 

Scriptomatic ツール

By Scripting Guys

同僚のシステム管理者がジャガーやポルシェに乗って、モンテカルロなどの海外旅行へ行く準備をしているところを窓から眺めながら、悲しい時間を過ごしたことはありませんか。そのときこう思ったに違いありません。「私だって彼らと同じぐらいシステム管理に関して多くのことを知っているのに、なぜ、彼らだけが高級車やヨットや Rolex を持っているのだろう?」と。

では、ここで少しだけその秘密を教えましょう。同僚のシステム管理者は、あなたの知らない WMI スクリプトの書き方を知っているからなのです。

というのは、真っ赤な嘘です。実際には、WMI スクリプトの書き方を習得しても、金持ちになったり、有名になったりはしません。もっとも、この仕事に就く前に、だれかにこのことを教えてもらいたかったとは思いますが。でも、WMI (Windows Management Instrumentation) スクリプトを利用すると、あなたのシステム管理人生をもっと簡素化することができます。ほとんど一日がかりの短調な雑用の繰り返しを複数のスクリプトに処理させることによって、多くの時間を他のことに費やすことが可能になります。

もちろん、「Scripting Guys が、ありとあらゆる WMI スクリプトを作成して TechNet のスクリプト センターに掲載してくれれば、自分たちが WMI スクリプトを書く手間が省けるのに」とお思いになるかもしれません。

がっかりさせて申し訳ありませんが、それは叶わぬ夢です。実際にスクリプト センターにアクセスしたことがあれば、次のように反応を示したはずです。まず、「すごい! このスクリプトの量を見てよ」と声を上げます。それから、一息ついた後に、「ちょっと待てよ。ビデオ カードに関する情報を取得する WMI スクリプトはどこにあるんだ? ネットワーク アダプタに関する情報を取得する WMI スクリプトは? [プロセッサ、マザーボード、バッテリ、USB ハブ、IDE コントローラ、キーボード、モニタ、サウンド カードなどのすべてまたはどれか] に関する情報を取得する WMI スクリプトはどこなんだ?」と言ったのではありませんか。

図星でしょう。本当のところは、私たちがすべてのスクリプトを書くことができるほど勤勉ではなかったということです。そもそも、スクリプトの数が多すぎます。しかし、私たちは次のような最高の仕事を成し遂げました。それは、特許化されていない Scriptomatic を開発したことです。この魅力的な新しいデバイスによって、"WMI のことを知らなくても" WMI スクリプトを書くことが可能になります。早速、Scriptomatic (Scriptomatic.exe) をダウンロードしてください。

免責条項   これは、私たちが "WMI を学ばなくてもいい" と言っていることになるのでしょうか。答えはもちろん、いいえです。なぜなら、私たちは、WMI スクリプトの記述に関するガイドを書いているし、WMI を基礎から学びたい人のために WMI スクリプト作成のチュートリアルも用意しました。

その一方で、私たちはあなたが忙しいことも、スクリプト センターなどの Web サイトを訪れる理由が WMI を学習する時間や腰を据えて WMI スクリプトを書く暇がないためであることも知っています。そして、これこそが私たちが Scriptomatic を開発した理由なのです。若干の制限を受け入れられれば、Scriptomatic は、あなたのために WMI スクリプトを生成します。あなたの車を洗ったり、床にワックスをかけたり、野菜を切り刻んだりもします。

そこまでは無理ですが、WMI スクリプトを生成することは確かです。

Scriptomatic は、Microsoft の標準サポート プログラムまたはサービスではサポートされていません。Scriptomatic は、何等保障もない現状有姿のままで提供されるものです。さらに、Microsoft は、商品性、特定目的への適合性を含む一切の黙示の保証をいたしかねます。お客様が Scriptomatic およびドキュメントの運用または機能から受けた影響については、お客様が負うものです。Microsoft、Scriptomatic の作成者、およびスクリプトの作成、製造、配布に関与する者は、いかなる場合においても、Scriptomatic、サンプル スクリプト、およびドキュメントの使用または使用不能から生じる損害 (逸失利益、事業の中断、事業情報の喪失、またはその他の金銭的損失を含みますがこれらに限定されません) に関して一切責任を負いません。たとえ、Microsoft がこのような損害の可能性について知らされていた場合でも一切責任を負いません。

ここで、Scriptomatic とその機能について説明します。Scriptomatic は、ハイパーテキスト アプリケーション、特に .hta ファイル拡張子を使用する Web ページの 1 つです。Scriptomatic を起動すると、選択した WMI クラス名 (Win32_SoundDevice、Win32_NetworkAdapter など) をドロップダウン リスト ボックス内に自動的に読み込みます。Scriptomatic が読み込みを終了すると、必要なクラスを簡単に選択することができます。これだけです。これで、Win32_SoundDevice、Win32_NetworkAdapter などから情報を取得するスクリプトが生成されました。

余談 その 1   Scriptomatic は、なぜハイパーテキスト アプリケーションなのでしょうか。理由は 2 つあります。1 つは、私たちがメモ帳とスクリプト コードを使って Scriptomatic を書きたかったからです。これは、Scriptomatic を構築するための早くて簡単な方法であるだけでなく、実際にスクリプトを使用して有益な仕事を成し遂げるという持論を実現することでもあったのです (Embezzlomatic (資金を横領できるスクリプト作成ツール) は夢のまた夢ですが)。

もう 1 つの理由は、Web ページ インターフェイスは良いアイデアのように思えますが、WMI は安全なスクリプトとして位置付けられていません。WMI を標準の Web ページ (.htm ファイル拡張子を持つページ) に組み込むと、WMI が安全なスクリプト記述ではないことを警告するメッセージ ボックスが繰り返し表示されることになります。.hta ファイルは、標準の Web ページのように厳しい安全対策を遵守していないため、これらの警告を回避する方法が提供されています (実際には、この問題を回避するための方法がいくつかあります)。

余談 その 2   ご心配なく。.hta ファイルは、安全ではないスクリプト記述の警告を回避することができますが、NTFS 許可などのその他のセキュリティは回避することができません。また、リモート コンピュータから情報を取得するときには、そのリモート コンピュータの管理者になる必要があります。.hta ファイルによって、このような制限を回避することはできません。

Scriptomatic は 2 つの重要な原則に従っています。まず、1 つ目は、WMI を使用して WMI の詳細情報を取得します。これでは意味がよくわからないので、次のように言い換えてみましょう。簡単な WMI スクリプトを作成し、コンピュータ上で使用可能な WMI クラスと、それぞれのクラス内で使用可能なプロパティとメソッドを調べることができます。これが Scriptomatic の背景にある全体構想です。Scriptomatic は、WMI を使って使用可能な WMI クラスを決定し、指定したクラスのプロパティを推定して、プロパティの値を取得するために使用可能なスクリプトを自動的に生成します。

Scriptomatic の背景にある 2 番目の原則は、ほとんどの WMI スクリプトが同じパターンに従うという事実です。このパターンに関する詳細については、 WMI スクリプト作成のチュートリアルを参照してください。一般的に、WMI スクリプトは、モニタ、無停電電源、またはハード ディスクなどの情報を取得するように設計されます。これらのスクリプトのほとんどが、同じパターンに従っています。まず、コンピュータに接続して、必要なクラスに接続し、そのクラス内部の各プロパティの値を表示します。この同じパターンに従うことによって、私たちは、コンピュータ上のほとんどの WMI クラスに関する情報を取得することができる包括的なスクリプト テンプレートを作成することができました。

でも、本当にこのことに興味がありますか。Scriptomatic が動作しているところを見たいのではありませんか。それなら、ファイルをダウンロードして実行してみてください。実行すると以下の図と同じような画面が表示されます。

ファイルを実行したときの画面

ワクワクしませんか。でも、そのままお待ちください。数分後には、最も興味深い有益な WMI クラスが Scriptomatic 内に表示されます。Scriptomatic は以下の図のようになります。

Scriptomatic の画面

それでは、Scriptomatic を使ってどのようにスクリプトを書くのでしょうか。信じられないかもしれませんが、必要な手順は次の 2 つだけです。(1) 使用可能なクラス名を含むドロップダウン リスト ボックスをクリックします。(2) 必要なクラスを選択します。すると、下の図のような新しいスクリプトが Scriptomatic に表示されます。

新しいスクリプトが Scriptomatic に表示されたときの画面

まるで夢が叶ったようですね。(皆さんはもっと素敵な夢を見つけてください)。

Scriptomatic でスクリプトを作成できることは便利なことですが、もっと多くのことができます。たとえば、Scriptomatic は、各プロパティの値を自動的に返します。では、すべてのプロパティの値を要求しない場合はどうでしょうか。選択したいくつかのプロパティの値だけを取得する場合はどうでしょうか。大丈夫です。Scriptomatic が生成したスクリプトは全体的に編集することができるので、必要のないコード行を削除するだけです。

ヒント その 1   Scriptomatic は、ローカル コンピュータに関する情報を取得するように設計されています。しかし、リモート コンピュータに関する情報を取得する場合はどうでしょうか。簡単なことです。すべての Scriptomatic スクリプトの 2 行目が次のようになっていることにお気付きでしょう。

strComputer = .

リモート コンピュータに対してスクリプトを実行するには、このドット (.) をリモート コンピュータの名前に変更するだけです。たとえば、MyWebServer という名前のコンピュータから情報を取得する場合は、スクリプトの 2 行目を次のように変更します。

strComputer = MyWebServer

それから、スクリプトを何回も繰り返し使えるように (または、後から元に戻したり変更したりできるように) 保存する場合はどうでしょうか。この場合は、[Save] ボタンをクリックして、スクリプトの名前を入力するだけです。必ず、.vbs ファイル拡張子を付けてください。Scriptomatic は、そのときエディット ボックスに入っているものを保存します。

あなたが私たちを信用していない場合はどうでしょうか。今すぐ使用できるスクリプトが存在していることをあなたが信じていない場合はどうでしょうか。「このスクリプトを保存するためにすべての問題を克服し、スクリプトを見つけて実行しても、何も起きないかもしれない」とあなたが思っている場合はどうでしょうか。スクリプトを実行したければ、[Run] ボタンをクリックするだけです。コマンド ウィンドウが開いて、スクリプトが実行されます。

免責条項   Scriptomatic スクリプトは、情報を取得するだけなので実行しても絶対に安全です。Scriptomatic スクリプトがコンピュータ上に何らかの設定を行うことはありません。神に誓って。最悪でも次の状況しか起きません。コンピュータ上のテープ ドライブに関する情報を取得するスクリプトを作成したとします。このスクリプトを実行して初めて、コンピュータにテープ ドライブが存在しないことに気が付きました。この場合はどうなるのでしょうか。スクリプトは実行を続けますが、何の情報も返しません。つまり、これが起こり得る最悪のシナリオです。

本当です。

ヒントその 2   最初、私たちは、すばやく簡単にスクリプトを書く方法として Scriptomatic を設計しました。設計後に、偶然にも自分たちが小さな管理ポータルを作成していたことに気が付きました。コンピュータにインストールされているサービスを知りたい場合は、Scriptomatic を起動して、Win32_Service クラスを選択し、[Run] ボタンをクリックします。コンピュータ上の共有フォルダに関する情報をさらに知りたい場合は、Win32_Share クラスを選択して、[Run] ボタンをクリックします。インストールされているハード ディスクについて知りたい場合は、Win32_DiskDrive を選択して、[Run] ボタンをクリックします。このツールを使って (Microsoft 管理コンソール (MMC) 用のスナップインのコレクションとは対照的に)、コンピュータに関するあらゆる種類の興味深い情報を探し出すことができます。そして、リモート コンピュータに関する情報を探す場合は、コンピュータ名を変更して実行するだけです。

前に示したように、これらは今すぐにでも使用可能なスクリプトです。たとえば、クラスとして Win32_Registry を選択したときに生成される実際のスクリプトを以下に示します。Microsoft Windows® XP 上で実行していることを前提とします。Windows の他のバージョン上で実行している場合は、Win32_Registry のプロパティを多少変更する必要があります。

On Error Resume Next 
strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set colItems = objWMIService.ExecQuery("Select * from Win32_Registry,,48") 
For Each objItem in colItems 
   Wscript.Echo "Caption: " & objItem.Caption 
   Wscript.Echo "CurrentSize: " & objItem.CurrentSize 
   Wscript.Echo "Description: " & objItem.Description 
   Wscript.Echo "InstallDate: " & objItem.InstallDate 
   Wscript.Echo "MaximumSize: " & objItem.MaximumSize 
   Wscript.Echo "Name: " & objItem.Name 
   Wscript.Echo "ProposedSize: " & objItem.ProposedSize 
   Wscript.Echo "Status: " & objItem.Status 
Next

このスクリプトが生成する出力情報を以下に示します。

Caption: Registry 
CurrentSize: 3 
Description: Registry 
InstallDate: 20011029113047.000000-480 
MaximumSize: 41 
Name: Microsoft Windows XP Professional|C:\WINNT|\Device\Harddisk0\Partition1 
ProposedSize: 41 
Status: OK

ほれぼれしませんか。

それでは、Scriptomatic は、スクリプト記述に対するすべてのニーズを満たしていますか。どうもそうではなさそうですね。Scriptomatic には、長所が多くある反面、制限がいくつかあります。

  • Scriptomatic は、プロパティ値を返す Win32 クラスのサブセットだけを処理するように設計されている。何百もの WMI クラスがありますが、これらのクラスがデータを返さないため、ほとんどスクリプト作成者の役に立ちません。このことは、CIM_Service などの CIM クラスの多くに当てはまります。このクラスは、コンピュータにインストールされているサービスに関するデータを返しません。すべてのクラスを表示して、有益なものとそうでないものを見分ける、表示するクラスを以下のクラスに制限することを決定しました。(1) データを返すクラス。(2) root\cimV2 名前空間に存在するクラス。(3) 名前が Win32_ で始まるクラス。これによって、Scriptomatic の処理がはるかに簡単になり、より有益で興味深い WMI クラスの約 98% が対象になります。もちろん、これは、より有益で興味深いクラスの 2% が無視されることを意味します。有益で興味深いクラスの多くが root\cimv2 以外の名前空間に置かれている Microsoft Windows Server™ 2003 上では、この割合がもっと高くなります。

    Windows 2000 で作業している初級のスクリプト作成者の場合は、このことが大きな問題になるとは思えません。Scriptomatic の将来のバージョンでは、処理範囲をもっと広げた方法を考え出していることでしょう。上級のスクリプト作成者が Windows Server 2003 で作業している場合はどうでしょうか。思い出してください。Scriptomatic は、ただの .hta ファイルです。これは、メモ帳で開いて、クラス内に読み込むためにコードを変更できることを意味します。あなたが経験豊富な WMI のスクリプト作成者であれば、この作業は簡単でしょう。

    あなたが経験豊富な WMI のスクリプト作成者でない場合は、メモ帳で Scriptomatic を開くと直ちに保証が無効になることをあらかじめご了承ください。

    とにかく、実際に保証が提供されていた場合でも無効になります。

  • Scriptomatic は一部のプロパティ値を返さない。Scriptomatic の開発において、ごまかしがあったことを告白します。WMI プロパティの中には配列形式で返すものがあります。たとえば、Win32_Printer クラスはプリンタの機能を配列で返す Capabilities プロパティを持っています。配列から値を続けて読み込むためには別のコードが必要です。プロパティごとに配列かどうかをチェックして、配列であればそこから値を続けて読み込むための特別なコードを追加する必要があります。これは決して不可能なことではありませんが、実現する時間がありませんでした。したがって、Win32_Printer Capabilities などのプロパティの値を取得することはできません。

    バージョン 2 でこの機能を追加する予定です。

  • Scriptomatic は、戻り値の解釈までは行わない。コンピュータにインストールされているすべてのサービスの状態を WMI に問い合わせると、"Service A—Running, Service B—Stopped, Service C—Running" などの情報が返されます。一目瞭然の内容です。しかし、プリンタ サーバーが管理するすべてのプリンタの状態を WMI に問い合わせると、"Printer A —4; Printer B—4; Printer C—7" などの情報が返されます。つまり、整数値が返されるため、4 を "印刷中" に、7 を "オフライン" に置き換えるコードを含めるかどうかを自分で決めることができます。

    Scriptomatic では、このように解釈することができません。さらに、Scriptomatic は、戻り値の意味を調べる方法を提供していません。現時点では、 WMI SDK (英語) を参照してください。いずれ、この情報を Scriptomatic の中に統合する別の方法を検討する予定です。

  • Sriptomatic は、プロパティ値を返すことはできるが、メソッドは実行できない。コンピュータにインストールされているすべてのサービスに関する詳細情報を調べるには、Scriptomatic は最適なツールです。Scriptomatic は正真正銘の情報検索マシンです。しかし、サービスを停止または開始する場合にも、WMI を使って実行させることができるのでしょうか。申し訳ありません。現行バージョンの Scriptomatic では、このようなことを実行できません。ただし、多くの利点があれば、将来的にこのような機能を追加する可能性を探るつもりです。
  • Scriptomatic は WMI でしか動作しない。これが制限になるとは思えません。つまるところ、WMI は、コンピュータ、コンピュータ上で動作しているソフトウェア、コンピュータに接続されている周辺機器などに関する情報を取得するための "最適な手段" です。WMI が行わない (または、うまく行うことができない) ことは、Active Directory® ディレクトリ サービスに保存された情報にアクセスすることです。これは、Scriptomatic を使って、ユーザー アカウント、組織単位、またはセキュリティ グループに関する情報を取得するスクリプトを書くことができないことを意味します。しかし、近い将来、Scriptomatic の後継が誕生したときには、WMI スクリプトに加えて ADSI スクリプトを書く機能を追加できることを願っています。

正直なところ、「Scriptomatic でできないことがあるなんて言わなかったじゃないか」と言われないために、すべての制限を列挙してきました。しかし、これらの制限があるからといって、Scriptomatic の使用を諦めないでください。Scriptomatic は完璧ですか。はい、そのとおりです。と、言いたいところですが、違います。しかし、Scriptomatic は、とても便利で、楽しく、簡単です。WMI スクリプトの記述を初めて学習するための教育手段であるとも言えます。しかも、無料です。他に質問はありますか。

これ以上質問はありませんよね。Scriptomatic をダウンロードして、あなたが潤った生活をおくれるようになるかどうかを見極めてください。そして、帰宅途中にジャガーのディーラーにでも立ち寄る計画を立ててください。

製品のサポート   Scriptomatic に対してどんな種類の製品サポートが提供されますか。製品のサポートは一切提供されません。ご自身で解決してください。ただし、Scriptomatic の良い点と悪い点、または将来のバージョンに対するご意見を聞かせていただきたいと思います。 scripter@microsoft.com (英語のみ) 宛てにご連絡をお待ちしております。

システム要件   実を言うと、Scriptomatic に対して長期にわたる厳密なテストを実施していません。しかし、実施したテストでは、Windows XP、Windows 2000、および Windows Server 2003 が稼動しているコンピュータで問題なく機能することがわかっています。また、Microsoft Windows NT® 4.0 が稼動しているコンピュータでは、Service Pack 6.0、Internet Explorer 5、WMI、および Microsoft Windows Script 5.6 がインストールされている場合に実行できます。また、Windows 98 では、Internet Explorer 5、WMI、および Windows Script 5.6 が動作しているコンピュータでも機能するようです。

Scripting Guys はだれですか

Scripting Guys は、Bob Wells、Dean Tsaltas、Ethan Wilansky、そして Greg Stemp です。