連載
» 2007年11月28日 00時00分 公開

基礎解説 演習方式で身につけるチェック式WSH超入門:第13回 WshShellオブジェクトを利用する(2) (3/3)

[牟田口大介(Microsoft MVP Windows Server - Admin Frameworks),著]
前のページへ 1|2|3       

 WshShellオブジェクトのうち、ここまででアプリケーションの操作をするメソッド、レジストリを扱うメソッドを紹介したが、残りのメソッドとプロパティのうち、派生するオブジェクトが存在しないものをここでまとめて紹介する(派生するオブジェクトが存在するメソッドやプロパティに関しては次回以降で解説する)。

Popupメソッド

 Popupメソッドは、MsgBox関数(第3回の「WSHで条件分岐処理をする」を参照)と同様のメッセージ・ボックスを表示させるためのメソッドで、もともとMsgBox関数が存在しないJScriptから主として使用することを想定しているものと思われる。が、PopupメソッドにはMsgBox関数にはない便利な機能があるので、VBScriptから使う場合も有用である。

 Popupメソッドの文法は以下の通りである。

intButton = objWshShell.Popup(strText,[nSecondsToWait],[strTitle],[nType])

 strTextには表示するメッセージを指定する。これは省略不可能な引数であり、残りの引数は省略可能である。strTitleはメッセージ・ボックスのタイトル、nTypeはダイアログに表示するボタンとアイコンの種類を指定するもので、MsgBox関数と同様である。が、1つMsgBox関数にはない引数、nSecondsToWaitが存在する。この引数に時間(秒数)を指定すると、その時間の経過後にメッセージ・ボックスが自動的に閉じられる。ユーザーにこれから行う処理を示す際などに便利であろう。なお、メッセージ・ボックスが自動的に閉じられた場合Popupメソッドは-1を戻り値として返す。

※ファイル:Popup.vbs

Option Explicit

'オブジェクト変数の宣言とWshShellオブジェクトの作成。
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")

Dim intButton

'Popupメソッドの第2引数に秒数を指定して実行。
intButton = _
objWshShell.Popup("このメッセージ・ボックスは5秒後に自動的に閉じます。" _
,5 , , vbOKOnly)

'Popupメソッドの戻り値で場合分け。
Select Case intButton
    Case vbOK 'OKボタンを押したとき。
        MsgBox "OKをクリックして閉じました。"
    Case -1 '5秒たって自動的に閉じられたとき。
        MsgBox "自動的に閉じられました。"
End Select

Set objWshShell = Nothing

 このスクリプトを実行すると次のようになる。

■起動後に表示される画面
■5秒間放置した場合
■OKをクリックした場合
Popupメソッドを使ったスクリプトの実行例

 このように、自動的に閉じられたかユーザーが閉じたかを判別して処理を書くことができる。

LogEventメソッド

 イベント・ログとは、OSやアプリケーションで発生したイベント(エラーや情報など)が書き込まれたファイルであり、管理ツールのイベント・ビューアなどで閲覧することができる。システム管理者はイベント・ログをトラブル・シューティングの手助けにしたりする。WSHからもスクリプト実行中に発生したイベントをイベント・ログに書き込むことができる。それがLogEventメソッドだ(ただし、Windows 9x/Meにはイベント・ログがないので、代わりにWindows ディレクトリ内のWSH.logファイルに記録される)。

 LogEventメソッドの構文は次の通り。

objWshShell.LogEvent intType, strMessage [,strTarget]

 intTypeにはイベントの種類を指定する。以下の値が指定可能だ。

intType 意味
0 SUCCESS(成功)
1 ERROR(エラー)
2 WARNING(警告)
4 INFORMATION(情報)
8 AUDIT_SUCCESS(成功の監査)
16 AUDIT_FAILURE(失敗の監査)
LogEventメソッドのintTypeに指定するイベントの種類

 strMessageにはログ・エントリのテキストを、省略可能なstrTargetにはコンピュータ名を指定可能である(デフォルトはローカル・コンピュータ)。

 イベント・ログに「情報」ログを書き込むには例えば以下のようなスクリプトを実行するとよい。

※ファイル:LogEvent.vbs

Option Explicit

'オブジェクト変数の宣言とWshShellオブジェクトの作成。
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")

'イベント・ログに「情報」ログを書き込む。
objWshShell.LogEvent 4, "スクリプトLogEvent.vbsを実行しました。"

Set objWshShell = Nothing

 このスクリプトを実行し、イベント・ビューアを見ると以下のようなログが保存されている。

WSHから記録したイベント・ログの例
上側がイベント・ビューアのログで、それをダブルクリックすると、下側のようにイベント・ログのエントリの詳細が表示される。このようにWSHからイベント・ログにエントリを書き込める。
  (1)スクリプトによって書き込んだイベント・ログ。
  (2)ログの詳細。

 WSHのスクリプトを実行中にエラーが発生した場合はエラー・エントリを記録したり、スクリプトが完了した際には成功エントリを記録したりする用途が考えられる。

ExpandEnvironmentStringsメソッド

 ExpandEnvironmentStringsメソッドは、環境変数を展開するためのメソッドだ。例えば環境変数windir(Windowsディレクトリのパスが格納されている)を展開するには次のようにする。

※ファイル:ExpandEnvironmentStrings.vbs

Option Explicit

'オブジェクト変数の宣言とWshShellオブジェクトの作成
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")

'環境変数windirを展開。
MsgBox objWshShell.ExpandEnvironmentStrings("%windir%")

Set objWshShell = Nothing

 このスクリプトを実行すると、次のように表示される。

ExpandEnvironmentStringsメソッドの実行例
このように、環境変数を展開することが可能である。

 このように、% 〜 % で囲んだ環境変数を展開することが可能である。なお、ExpandEnvironmentStringsメソッドはPROCESS環境領域に定義された環境変数のみを展開する。ほかの環境変数を取得するには、次回以降で解説する予定のEnvironmentプロパティを用いる必要がある。

CurrentDirectoryプロパティ

 CurrentDirectoryプロパティは文字通り、カレント・ディレクトリを取得または設定するためのプロパティだ。

※ファイル:GetSetCurrentDirectory.vbs

Option Explicit

'オブジェクト変数の宣言とWshShellオブジェクトの作成。
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")

'カレント・ディレクトリを取得。
MsgBox "現在のカレント・ディレクトリは、" & _
       objWshShell.CurrentDirectory & _
       "です。"

'カレント・ディレクトリを設定。
objWshShell.CurrentDirectory = "C:\"

'カレント・ディレクトリを取得。
MsgBox "現在のカレント・ディレクトリは、" & _
       objWshShell.CurrentDirectory & _
       "です。"

Set objWshShell = Nothing

 このスクリプトをC:\scriptに保存して実行すると次のような結果が得られる。

CurrentDirectoryプロパティの使用例
カレント・ディレクトリを取得し、別の値に設定したあともう一度取得している。

 このように、カレント・ディレクトリは通常スクリプトの存在するフォルダであるが、スクリプトから変更することが可能である。カレント・ディレクトリに存在するファイルはフルパスを記述せずともファイル名だけをRunメソッドの引数に指定したりすることができる。


 今回はレジストリを扱うメソッドなどWshShellに含まれるメソッド・プロパティの一部を説明した。次回もこの続きを行う予定である。


「基礎解説 演習方式で身につけるチェック式WSH超入門」のインデックス

基礎解説 演習方式で身につけるチェック式WSH超入門

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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