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

スクリプト: 最初のステップ

はるか昔、Scripting Guys のだれもがまだ生まれていないころ、人々はある場所から別の場所へ歩いて行きました。運動や気晴らしのためではなく、そこへ行く必要があるからでした。幸運にも他の形態の移動手段があった人々は、馬、らくだ、象、または人に慣れた身近なその他の動物に乗ってもう少し速く移動することができました (私たちが次に交通渋滞に出くわしたときには、今でもこのような原始的な移動手段を利用している人々のことを思い出すでしょう)。

やがて、自動車と呼ばれるものが登場します。多くの人々は笑いました。彼らは「そんなものは一時的な流行だよ」とか、「そんなもの必要ないね」とか、「危険すぎる」とまで言っていました。「そいつはすごい。ぜひ試してみたいね」と言う先見の明のある人はごくわずかでした。この先見の明のある人々には、自動車が楽しいものだということだけでなく、ある場所から別の場所へ移動する時間が何時間も、あるいは何日間も節約できる日がいつか来ることがわかっていました。

今日の人々は、はるか昔に車に対面した人々と同じ反応をスクリプトについて示しました。「スクリプトなんて必要ないよ」とか、「スクリプトなんて、他の人と同じことをしたくないマニアのためのものにすぎないよ」とか、「スクリプトなんて危険だよ」と言う人までいます。しかし実際には、スクリプトを試すのに先見の明はいらず、冒険心が必要なわけでもありません。時間を節約したいと思う人であればよいのです (マニアというのは、スクリプトが楽しいと思う人だけです)。スクリプトは作業の速度を上げるだけでなく、仕事を簡単にもします。また、基本的な交通規則を学習すれば、運転はまったく難しくありません (それに交通渋滞もわずかです)。

*

トピック

手順 1手順 1
スクリプトとはいったい何かスクリプトとはいったい何か
それでも、スクリプトの内容はコードのように見えるそれでも、スクリプトの内容はコードのように見える
スクリプトの実行スクリプトの実行
頭字語について頭字語について
スクリプト センターのナビゲートスクリプト センターのナビゲート
独り立ちのときです独り立ちのときです
初心者のために初心者のために

*

手順 1

C:\>cscript test.vbs

これは、Microsoft Windows システムを管理するスクリプトを使い始めるにあたって最初に知っておく必要のあることです。厳密には、2 番目に知っておく必要のあることですが。まず最初に知っておく必要があるのはスクリプト センターの見つけ方ですが、皆さんがこれをご存知であるのは明らかなので、その手順は省略することにしました。

スクリプト センターには (インターネット上の他の場所にもあるかもしれませんが、それについては保証できません)、作成済みのすぐに使えるスクリプトが数多くあります。スクリプトとは、次のようなものです。

Wscript.echo "My very first script."

そうです。この 1 行がスクリプトです。これは非常に単純なスクリプトであり、たいていのスクリプトはこれより長くなりますが、これもスクリプトです。ここで、この 1 行をどのように処理すればよいのかという疑問がわいてきます。それは非常に単純です。

メモ帳を開きます。
ブラウザからスクリプトをコピーし、メモ帳に貼り付けます。
test.vbs のように、拡張子 .vbs を付けてスクリプトを保存します。

ここでコマンド ウィンドウを開き、ファイルを保存したフォルダに移動し、次のように入力します。

cscript test.vbs

前述のスクリプトでこの操作を行った場合、出力は次のようになります。

My very first script.

注 : おそらく、「動作しないぞ。どうなってるんだ」と言う人もいるでしょう。心配しないでください。あなただけではありません。この手順でよくある誤りは、[名前を付けて保存] 機能を使用するときに発生します。メモ帳の [名前を付けて保存] を選択し、[ファイル名] ボックスにファイル名を入力すると、指定した名前が何であれ、メモ帳はその後にファイル拡張子 .txt を追加してくれます。そのため、「test.vbs」と入力した場合、ファイル名は最終的に test.vbs.txt になります。これを簡単に回避する方法は 2 つありますが、次のどちらを選択してもかまいません。

ファイル名を二重引用符で囲みます。[ファイル名] ボックスに「test.vbs」と入力する代わりに、「"test.vbs"」と入力します。
[保存] をクリックする前に、[名前を付けて保存] の [ファイルの種類] ボックスで、[すべてのファイル] を選択します。

これらの手順を実行すると、スクリプト センターにあるどのスクリプトも同じように実行できます。それではスクリプトをお楽しみください。

 

スクリプトとはいったい何か

スクリプトについてもっと詳しく知りたいのですね。それでは、少し戻って (手順 0 まで戻ります)、スクリプトとは何か、スクリプトをなぜ使用するのかについて説明しましょう。

スクリプトは、自分のコンピュータ (およびその他のコンピュータ) との情報のやり取りを自動化する方法にすぎません。最初に示したスクリプトでは、コンピュータに文を与え、コンピュータから同じ文を取得しました。特に便利な機能とは思えないかもしれませんが、これは最初の一歩にすぎません。一歩だけではドアから出ることはおろか、部屋の中を歩くことすらできません。(Scripting Guys の 1 人はかつて一歩で部屋の中のどこにでも行けるアパートに住んでいたことがあります。しかし、寒すぎることや巨大なクモが出ることなど、詳しくは説明したくないさまざまな理由から、そのアパートはここに示した最初のスクリプトよりはるかに役に立たないものでした)。スクリプトが本当に役立つ状況は多数あります。その例を次にいくつか示します。

定期的に一連のシステム管理タスクを実行する必要がある場合
複数のコンピュータで一連のシステム管理タスクを実行する必要がある場合
コンピュータからの出力を統合して整理したい場合
GUI で対話できる環境にない場合にタスクを実行したい場合
タスクを実行するたびにまったく同じアクションを繰り返す必要がある場合

システム管理者として行う必要のある作業について考えた場合に、スクリプトを作成するタスクを既に考えたことがあるかもしれません。

 

それでも、スクリプトの内容はコードのように見える

スクリプト センターは既にご覧になり、毎日発行される「 Hey, Scripting Guy!」の記事もいくつかお読みになり、次のようなスクリプトを目にされたことと思います。

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colProcesses = objWMIService.ExecQuery _

    ("Select * from Win32_Process Where Name = 'Dfrgntfs.exe'")



If colProcesses.Count = 0 Then

    Wscript.Echo " Dfrgntfs.exe is not running."

Else

    Wscript.Echo " Dfrgntfs.exe is running."

End If

「このスクリプトの内容はかなり複雑に見える」と思うかもしれません。信じられないかもしれませんが、実は、スクリプトはプロのコンピュータ プログラマのためだけのものではありません。プログラマ向けには、はるかに強力で複雑なツールがあります。誤解しないでいただきたいのですが、スクリプトは強力で複雑にすることもできますが、非常に役立つかなり単純なスクリプトも作成できます。ですから、この内容を恐ろしい "コード" とは考えないでください。プログラミング経験が皆無でも、かなり簡単に行えることが多数あります。

他の種類のプログラミングよりもスクリプトの方が優れている点の 1 つは、必要なものがオペレーティング システムに組み込まれていることです。VBScript、WSH、WMI などのいくつかの頭字語については後ほど簡単に説明しますが、ここではこれらがすべてスクリプトの一部であり、すべて Windows に組み込まれているということを述べておきます。スクリプトを作成するためには、手の込んだ高価なソフトウェアも不要です。既に説明したように、必要なのはメモ帳だけであり、これも Windows に組み込まれています。

また、スクリプトはオペレーティング システムの管理に役立つように設計されています。非常に才能のあるプログラマでさえ、スクリプトを使用して Word や Excel などの成熟したソフトウェア アプリケーションを作成しようとすることはありません。スクリプトを使用すると、システム管理タスクを自動化できるのです。

ここで説明するスクリプト (また、スクリプト センターで扱うほとんどのスクリプト) の種類は、システム管理スクリプトです。他の種類のスクリプト (Web スクリプトなど) もありますが、それについては他の場所で学習してください。

VBScript 以外にもスクリプト言語はあり、メモ帳以外にもスクリプトの作成に使用できるツールはあります。しかし、それらすべてについては、スクリプトを少し経験すると自分で調べることができるようになります。スクリプト センターのスクリプトと例のほとんどは、VBScript を使用しています。

重要 : システム管理スクリプトに関する次の最後の事柄は、知っておく必要のある非常に重要な事柄です。ほとんどのスクリプト、少なくとも非常に興味深い処理を行うスクリプトを実行するには、スクリプトの実行対象のコンピュータに対するローカル管理者権限が必要です。スクリプト センターで入手できるスクリプトの多くは、ローカル管理者として実行しないと失敗します。

 

スクリプトの実行

内容に関する背景情報を十分に理解したところで、いくつかのスクリプトの実行に戻ります。Cscript を使用してコマンド ラインからスクリプトを実行する方法は既に示しました (「スクリプトの実行」というタイトルに惹かれて直接このセクションに来た方は、心を落ち着けて息を整え、一番上に戻って手順 1 を読んでください)。スクリプトは、[マイ コンピュータ] または Windows エクスプローラでダブルクリックするだけでも実行できます。違いは、スクリプトからの出力がコマンド ウィンドウに表示される代わりに、メッセージ ボックスにポップアップ表示されることです。既に作成したスクリプトでこれを試してみましょう。test.vbs ファイルを単純にダブルクリックしてください。すると、次のようなメッセージ ボックスが表示されます。

最初のスクリプト

簡単でしたね。これを最初に行わなかったのはなぜだと思いますか。コマンド ウィンドウは何のために必要なのでしょうか。この質問に答える前に、次の操作を試します。次のスクリプトをメモ帳に貼り付け、拡張子 .vbs を付けて保存し、そのファイルをダブルクリックしてください。

For i = 1 to 5

    Wscript.echo i

Next

どうなりましたか。5 つのメッセージ ボックスそれぞれで [OK] をクリックする必要がありましたね。ここで、スクリプトが、コンピュータ上で実行されているすべてのプロセスや、ドメイン内のすべてのコンピュータ名を返す場合を想像してください。クリックが何度も必要になりますね。Cscript を使用してスクリプトを実行すると、この出力がコマンド ウィンドウにすべて直接送信されるため、これらのメッセージ ボックスをすべて操作する必要はありません。

スクリプトの実行の詳細については、「Windows 2000 Scripting Guide」の「 Running WSH Scripts」(英語) を参照してください。

 

頭字語について

頭字語については後で言及すると前に述べました。Scripting Guys は決して嘘をつかないので (「その髪型似合うね」と言うことはたまにありますが)、スクリプト関連のテクノロジのごく簡単な定義と、各テクノロジについてより詳しく説明している「Windows 2000 Scripting Guide」のセクションを以下に示します。

VBScript - Visual Basic, Scripting Edition。Microsoft Windows で既定で使用できるスクリプト言語。「 VBScript Primer」(英語) を参照してください。
WSH - Windows Script Host。スクリプトを実行する環境。「 WSH Primer」(英語) を参照してください。
WMI - Windows Management Instrumentation。スクリプトを通じて Windows オペレーティング システムを管理するためのリソースを提供するテクノロジ。「 WMI Scripting Primer」(英語) を参照してください。
ADSI - Active Directory Service Interfaces。スクリプトを通じて Active Directory およびその他のディレクトリ サービスを管理するためのリソースを提供するテクノロジ。「 ADSI Scripting Primer」(英語) を参照してください。

スクリプト センターのナビゲート

スクリプト センターには、スクリプトの作成を開始するとき、およびさらに高度なスクリプトが必要なときに役立つ多数のリソースが用意されています。

スクリプトを学ぶ - 最初に読むのに最適なのは「スクリプトを学ぶ」ページです。このページには、「Windows 2000 Scripting Guide」(1,200 ページのオンライン ドキュメント)、さまざまな記事、仮想ラボ、およびオンデマンド Web キャストへのリンクがあります。最初は、 Scripting Week 1 の Web キャストを参照すると非常に役立ちます。

スクリプト一覧 - スクリプト センターの「スクリプト一覧」を利用することが多くなるでしょう。ここには、作成済みの何千というスクリプトが用意されています。無料でコピーすることができるのに、長い時間をかけて新しいスクリプトを作成する必要があるでしょうか。求めているスクリプトとまったく同じものが見つからない場合は、よく似たスクリプトを探し、必要に応じて単純な変更を加えることができます (スクリプト センターのスクリプトでは、通常はエラー チェックを行いません。そのため、もう少しスクリプトに慣れて、より複雑なスクリプトを扱うようになったら、「Windows 2000 Scripting Guide」の「 Error Handling」(英語) を参照してください)。

スクリプト ツール - スクリプト センターには、スクリプトの作成に役立つ、無料でダウンロードできる多数のツールへのリンクもあります。

製品とテクノロジ別スクリプト - Desktop Deployment や Windows Server 2003 など、システム管理の特定分野の問題を解決しようとしている場合は、スクリプト センターのテクノロジ固有の領域を参照してください。

Fun Zone (英語) - 説明が最後になりましたが、重要性が低いというわけではありません。ある程度時間があり、楽しみたい (そしてプロセスを学びたい) という場合は、「Dr. Scripto’s Fun Zone」をチェックしてください。

 

独り立ちのときです

読者を独り立ちさせる前に、1 つの有用なヒントをお伝えします。スクリプトでは大文字と小文字が区別されません。いつも指摘しているように 1 つか 2 つの例外はありますが、スクリプトのほとんどの部分は単に読みやすさを高めるために大文字と小文字を混在させています。乱数を生成する次のスクリプトについて考えてみましょう。

intHighNumber = 100

intLowNumber = 1



For i = 1 to 5

    Randomize

    intNumber = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber)

    Wscript.Echo intNumber

Next

このスクリプトは、次のスクリプトとまったく同じ動作をします。

inthighnumber = 100

intlownumber = 1



for i = 1 to 5

    randomize

    intnumber = int((inthighnumber - intlownumber + 1) * rnd + intlownumber)

    wscript.echo intnumber

Next

これで、スクリプト センターの他の部分に進み、作業を行う準備ができました。どうしても行き詰まった場合は、 scripter@microsoft.com (英語のみ) に電子メールで支援を求めることができます。それではお楽しみください。

 

初心者のために

スクリプトに関するこの紹介をお楽しみいただき、お役に立てたならさいわいです。スクリプト作成開始の詳細については、「 Sesame Script」シリーズを参照してください。