管理作業では、決まりきった一連の処理を実行したり、同じ処理を繰り返したりすることが多い。WSHで自動化・省力化を図ろう。
ネットワーク管理者の毎日は憂鬱だ。新規のユーザーの追加やユーザー情報の変更、共有資源のメンテナンス、障害の原因追求など、仕事は次から次へと終わりがない。しかも実際の作業といったら、同じコマンドやツールを繰り返し実行したり、決まりきった一連のコマンドやツールを順に実行したりするだけのうんざりする内容だったりするものだ。
周知のとおり、WindowsのメリットはGUI環境だということだ。アプリケーションはもちろんのこと、Windows環境を管理する各種の管理ツールもGUI化されたことで、初心者管理者でも管理作業に手をつけられるようになった。グラフィカル・アプリケーションのユーザーは、メニューやダイアログの表示により、自分にどのような操作が許されているのか(許されていないのか)を知ることができるからだ。
しかしこうしたグラフィカル・ツールは、使い慣れないものをたまに使う分には非常に便利なのだが、日常的に同じような処理を繰り返し実行するには、まどろっこしくて面倒である。グラフィカル・ツールではインタラクティブな操作が基本であり、一連の操作を自動化することが難しい。例えば新しいユーザーを100人分ドメインに追加するとき、たいていのグラフィカル・ツールでは、確認用ダイアログの[OK]ボタンを100回クリックすることになるだろう。気の遠くなる話だ。
こんなときには、一連の操作や繰り返し操作をスクリプトとして記述しておき、一気に実行できると便利である。MS-DOSのバッチ(.bat)やUNIXのシェル・スクリプトはこのような用途に活用されている。
Windows環境においても、コマンド・プロンプトからバッチを利用することができる。しかしバッチで制御できるのは、基本的にコマンドライン・コマンドを実行することだけで、条件分岐やループ処理も可能だが、機能は極めて限定的で、とても洗練されたものとはいいがたい。
このバッチに代わるものとして、Windows環境ではWindows Script Host(以下WSH)と呼ばれる機能が提供されている。これはWindowsが標準でサポートするスクリプト環境で、テキスト・ベースのスクリプトを記述することで、GUIに頼ることなく、Windows環境でさまざまな処理を実行できる。特に、WSHの大きな特徴は、オートメーション機能を持ったCOM(Component Object Model)オブジェクトをスクリプトから制御できることである。現在、多くのアプリケーションやライブラリがCOMオブジェクトとして制御可能になっている。例えば代表的なところでは、WebブラウザのInternet ExplorerやOfficeアプリケーションもその1つで、WSHを利用して、IEやOfficeをコンポーネントの1つとしてスクリプトから制御可能である。
さらにWindows環境では、WMI(Windows Management Instrumentation)と呼ばれるCOMオブジェクト・ベースのアクセス・インターフェイスが用意されており、これを利用すればWindowsデスクトップやネットワークなどの情報取得、設定変更、モニタリングなど、Windowsシステムの運用管理にまつわるほとんどの作業をスクリプトから制御できる。同様にActive Directory環境を利用しているなら、ADSI(Active Directory Service Interface)と呼ばれるインターフェイスを利用して、Active Directoryの設定・運用・管理にまつわるカスタム・スクリプトを作成できる。
つまりWSHスクリプトからWMIやADSIを利用することで、Windowsシステムの展開や初期設定、運用管理といった雑務を自動化し、これらにかかる手間を大幅に削減できる余地があるということだ。
ところが実際には、こうしたWindowsシステム管理の分野でWSHが広く活用されているかといえばそうではない。WSH環境で標準的に利用可能な言語はVBScript(Visual Basic Script)やJScriptである。これらは当初、Webページのクライアント・サイド・スクリプト向けに設計されたものだった。このためマイクロソフトが提供するVBScriptやJScript関連のドキュメントやコード・サンプル、市販の解説書など、Webページに組み込むスクリプトを前提としたものが多かった。
しかし前述したとおり、WSHは何もWebページ・スクリプトだけのものではない。管理者が、煩雑な日々の管理作業を省力化するために活用することが可能である。本稿では、こうした目的でWSHを活用したいと考えている管理者を想定し、WSHの初歩について解説していこうと思う。以後本稿では、WSHのしてサンプル・スクリプトを紹介することになるが、読者対象や目的は前挙のように想定しているので、複雑なエラー処理などは行わず、なるべくシンプルなコード例を紹介することに務める。管理者であれば、エラー時の処理などは自分で解決できるはずだ。
Copyright© Digital Advantage Corp. All Rights Reserved.