Windows Script Host (MSH)


 
WScript オブジェクト モデル
 

WScriptオブジェクト モデル

MSDN
Windows Script Hostより
ルート オブジェク( WScriptオブジェクト )以下 14 のオブジェクトで構成されている。

 このモデルで用意されている COM インターフェイスは、以下の 2 つの主要カテゴリに分類できる。
  • スクリプトの実行とトラブルシューティング
      メッセージの画面出力、CreateObject や GetObject などの基本的 COM機能をスクリプトに対して提供。
  • ヘルパー機能
      ネットワーク ドライブのマッピング、プリンタへの接続、環境変数の取得と変更、レジストリ キーの操作などの処理をプロパティとメソッドで提供。

 
WScript オブジェクト
 

 階層のルート オブジェクト。このオブジェクトのメソッドとプロパティを操作することにより処理を実行する。その詳細はMSDのリファレンス原本を参照されたい。概要は次ぎのようになる。
  • コマンド ライン引数を設定および取得する(Arguments プロパティ)
  • スクリプト ファイルの名前を取得する(ScriptFullName プロパティ)
  • ホスト ( wscript.exe または cscript.exe )の名前 を取得する (Name プロパティ)
  • ホスト バージョン情報を取得する (Version プロパティ)
  • COM オブジェクトを作成、接続、および切断する
  • イベント シンクを作成する。( イベントの送信元をソース、受信側をシンクとよぶ。)
  • プログラムによってスクリプトの実行を停止する ( Quit メソッド )
  • 既定の出力デバイス (ダイアログ ボックスやコマンド ラインなど) に情報を出力する

WshArguments オブジェクト

 すべてのコマンド ライン引数にアクセスする。
WScript オブジェクトのArguments プロパティを参照すると、このオブジェクト (引数のコレクション) が返される。
objArgs = WScript.Arguments;
for (i = 0; i < objArgs.length; i++)
{
   WScript.Echo(objArgs(i));
}
この例のように、WScriptオブジェクトのArgumentsプロパティを変数に代入すると、配列としてのオブジェクトが生成すると考える。JScriptのルールでインデックス(配列番号)はゼロから始まる。

WshNamed オブジェクト,WshUnnamed オブジェクト

 名前付きコマンド ライン引数にアクセスする。
 名前なしコマンド ライン引数にアクセスする。

 WshArgumentsオブジェクトのNameプロパティは、名前付きコマンド ライン引数、名前なしとに分けてアクセス出来る。名前付きは、引数名をインデックスとして使用して個々の引数の値を取得できる。
<job id="JS"> <script language="JScript"> var argsNamed = WScript.Arguments.Named; var argsUnnamed = WScript.Arguments.Unnamed; WScript.Echo("There are " + argsNamed.length + " named arguments."); WScript.Echo("There are " + argsUnnamed.length + " unnamed arguments."); </script> </job>
このサンプルコードはXML表記してある。現在のWSH5.6より可能。

 
WshController オブジェクト
 

 リモート スクリプト プロセスを作成するために, CreateScript() メソッドへのアクセスを提供します。
var Controller = WScript.CreateObject("WSHController"); var RemoteScript = Controller.CreateScript("test.js", "remoteserver"); RemoteScript.Execute(); while (RemoteScript.Status != 2) { WScript.Sleep(100); }

WshRemote オブジェクト

 WshRemote オブジェクトを使用すると、ネットワーク上のコンピュータ システムをリモート管理できます。このオブジェクトは WSH スクリプト、つまり .wsh、.wsf、.js、.vbs、.jse、.vbe のいずれかの拡張子を持つスクリプト ファイルを意味する。
実行するスクリプトのインスタンスは 1 つのプロセスになります。このプロセスは、ローカル コンピュータおよびリモート コンピュータのいずれでも実行できます。ネットワーク パスを指定しないと、ローカルで実行されます。

WSHRemote オブジェクトを作成 (CreateScript() メソッド使用) すると、対応するスクリプトが対象のコンピュータ システムにコピーされます。コピー先のシステムで、スクリプトがすぐに実行されるわけではありません。WSHRemote のメソッドである Execute が呼び出されてから、スクリプト実行が開始されます。
この WshRemote オブジェクト インターフェイスを介して、ユーザー定義スクリプトからほかのプログラムやスクリプトを操作できます。また、外部アプリケーションからリモート スクリプトを操作することも可能です。WshRemote オブジェクトは DCOM 経由で非同期に動作します。(同期とは要求送信した後、結果が届くまで接続したまま待つシステム。非同期は要求送信して、一旦切断。後に要求送信して結果を受け取る。)


WshRemoteError オブジェクト

リモート スクリプト (WshRemote オブジェクト) がスクリプト エラーが原因で終了したとき,WshRemote オブジェクトの Error プロパティから返されます。  
var Controller = WScript.CreateObject("WSHController"); var RemoteScript = Controller.CreateScript("test.js", "remoteserver"); WScript.ConnectObject(RemoteScript, "remote_"); RemoteScript.Execute(); while (RemoteScript.Status != 2) { WScript.Sleep(100); } WScript.DisconnectObject(RemoteScript); function remote_Error() { var theError = RemoteScript.Error; WScript.Echo("Error " + theError.Number + " - Line: " + theError.Line + ", Char: " + theError.Character + "\nDescription: " + theError.Description); WScript.Quit(-1); }

 

WshNetwork オブジェクト
 

WshNetwork オブジェクトを作成すると、ネットワーク共有やネットワーク プリンタへの接続/接続解除、ネットワーク共有の割り当て/割り当て解除、ネットワーク上のユーザー情報へのアクセスなどを行うことができる。
<job id="js"> <script language="JScript"> var WshNetwork = WScript.CreateObject("WScript.Network"); WScript.Echo("ドメイン = " + WshNetwork.UserDomain); WScript.Echo("コンピュータ名 = " + WshNetwork.ComputerName); WScript.Echo("ユーザー名 = " + WshNetwork.UserName); </script> </job>

 
WshShell オブジェクト
 

WshShell オブジェクトを作成すると、ローカルでのプログラム実行、レジストリ内容の操作、ショートカットの作成、システム フォルダへのアクセスなどを行うことができる。

WshShortcut オブジェクト

 ショートカットへのオブジェクト参照を作成します。

<job id="js"> <script language="JScript"> var WshShell = WScript.CreateObject("WScript.Shell"); strDesktop = WshShell.SpecialFolders("Desktop"); var oShellLink = WshShell.CreateShortcut(strDesktop + "\\Shortcut Script.lnk"); oShellLink.TargetPath = WScript.ScriptFullName; oShellLink.WindowStyle = 1; oShellLink.Hotkey = "CTRL+SHIFT+F"; oShellLink.IconLocation = "notepad.exe, 0"; oShellLink.Description = "Shortcut Script"; oShellLink.WorkingDirectory = strDesktop; oShellLink.Save(); </script> </job>

WshUrlShortcut オブジェクト

WshUrlShortcut オブジェクトを作成するには、WshShell のメソッドである CreateShortcut を使用します 。
<job id="js"> <script language="JScript"> var WshShell = WScript.CreateObject("WScript.Shell"); var oUrlLink = WshShell.CreateShortcut(strDesktop + "\\Microsoft Web Site.url"); oUrlLink.TargetPath = "http://www.microsoft.com"; oUrlLink.Save(); </script> </job>

WshEnvironment オブジェクト

WshShell オブジェクトの Environment プロパティによって返され環境変数のコレクション。環境変数セット全体 (名前付き変数および名前なし変数) が含まれます。個々の環境変数 (およびその値) をこのコレクションから取得するには、環境変数名をインデックスとして使用。
var WshShell = WScript.CreateObject("WScript.Shell"); var WshSysEnv = WshShell.Environment("Process"); WScript.Echo(WshSysEnv("PATH"));
Win98の場合.Environment("Process")として指定し、COMSPEC、PATH、PROMPT、WINDIR、TEMP、TMPの6個のみが得られる。

WshSpecialFolders オブジェクト

WshShell オブジェクトの SpecialFolders プロパティは、WshSpecialFolders オブジェクトを返す。これは、[デスクトップ] 、[スタート メニュー] 、個人用ドキュメントのフォルダなど、Windows の特殊フォルダへの参照が含まれている。このコレクションでは、フォルダ名をインデックスとして指定して、特殊フォルダへのパスを取得します。特殊フォルダ内に格納される情報は、コンピュータ システムにログオンするユーザーごとに異なります

特殊フォルダは次のとおりです。

  • AllUsersDesktop
  • AllUsersStartMenu
  • AllUsersPrograms
  • AllUsersStartup
  • Desktop
  • Favorites
  • Fonts
  • MyDocuments
  • NetHood
  • PrintHood
  • Programs
  • Recent
  • SendTo
  • StartMenu
  • Startup
  • Templates

WshScriptExec オブジェクト

 WshShell オブジェクトの Exec メソッドによりスクリプトを実行すると、WshScriptExec オブジェクトが返される。これは、スクリプトの実行終了後または実行開始前のいずれかに行われる。

var WshShell = new ActiveXObject("WScript.Shell"); var oExec = WshShell.Exec("calc"); while (oExec.Status == 0) { WScript.Sleep(100); } WScript.Echo(oExec.Status);

Status プロパティは、次のような列挙型の値を返す。
WshRunning ( = 0)
ジョブはまだ実行中です。
WshFinished ( = 1)
ジョブの実行が完了しました。


MSDN Windows Script Hostリファレンス

概要を上記リファレンスにより記述。詳細は原本で確認して下さい。

2003.10.17 by Kon