Microsoft Windows Script Host ( WSH ) (以前はWindows Scripting Hostと呼ばれていました) は、バッチ ファイルに匹敵するスクリプト機能を提供する Microsoft Windows オペレーティング システム用の自動化テクノロジーですが、サポートされる機能の範囲はより広くなっています。このツールは、Windows 95 のビルド 950a 以降で、インストール ディスクにオプションのインストールとして初めて提供され、コントロール パネルを使用して構成およびインストールできました。その後、Windows 98 (ビルド 1111) 以降、および Windows NT 4.0 ビルド 1381 と Service Pack 4 によって標準コンポーネントになりました。WSH は、 IE バージョン 3.0 以降にインストールされた WSH エンジンを介してInternet Explorerの自動化手段にもなります。この時点で、VBScript はMicrosoft Outlook 97の自動化手段になりました。[ 1 ] WSH は、 Windows CE 3.0 以降に VBScript および JScript エンジンとともに提供されるオプションのインストールでもあります。Rexxやその他の形式のBASICを含むサードパーティ エンジンもいくつか利用可能です。[ 2 ] [ 3 ] [ 4 ]
言語に依存しないため、さまざまなアクティブスクリプティング言語エンジンを利用できます。デフォルトでは、プレーンテキストのJScript(.JSおよび.JSEファイル)とVBScript(.VBSおよび.VBEファイル)を解釈して実行します。
ユーザーは、 PerlScriptなどの他の言語でスクリプトを作成できるように、さまざまなスクリプトエンジンをインストールできます。言語に依存しないファイル名拡張子WSFも使用できます。Windowsスクリプトファイル(.WSF)の利点は、1つのファイル内で複数のスクリプト(「ジョブ」)や複数のスクリプト言語の組み合わせを扱えることです。
WSH エンジンには、 Rexx、Object REXX (ooRexx) (バージョン 4.0.0 まで)、BASIC、Perl、Ruby、Tcl、PHP、JavaScript、Object Pascal Delphi、Python、XLNT、およびその他の言語のさまざまな実装が含まれています。
Windows Script Host は、 Windows 98以降のバージョンの Windowsにデフォルトで配布およびインストールされます。また、 Internet Explorer 5 (またはそれ以降のバージョン) がインストールされている場合にもインストールされます。Windows 2000以降、Windows Script Host はユーザーログオンスクリプトで使用できるようになりました。
Windows Script Host は、ログオン スクリプト、管理、一般的な自動化など、さまざまな目的で使用できます。Microsoft はこれを管理ツールと説明しています。[ 5 ] WSH はスクリプトを実行するための環境を提供します。適切なスクリプト エンジンを呼び出し、スクリプトが操作するための一連のサービスとオブジェクトを提供します。[ 5 ]これらのスクリプトは、グラフィカル ユーザー インターフェイス(GUI) モード ( WScript.exe ) またはコマンドライン モード ( CScript.exe ) で実行することも、COM オブジェクト ( scrobj.dll ) から実行することもでき、対話型または非対話型のスクリプトに対してユーザーに柔軟性を提供します。[ 6 ] Windows Management Instrumentationもこの方法でスクリプト化できます。
WSH、エンジン、および関連機能も、VBAやVisual Studioのオブジェクトエクスプローラー、およびMicrosoft Script Debuggerなどの各種スクリプトデバッガーやエディターといった類似ツールを使用してアクセス、スクリプト化、クエリを実行できるオブジェクトとしてリストされています。
WSH は、コンポーネント オブジェクト モデル(COM) インターフェイスのセットを公開するオブジェクト モデルを実装しています。 [ 7 ]そのため、ASP、IIS、Internet Explorer、CScript、WScript に加えて、WSH は、COM やその他の公開オブジェクトを備えた任意の Windows アプリケーションを自動化および通信するために使用できます。たとえば、PerlScript を使用してさまざまなODBCエンジンやSQLなどのさまざまな方法でMicrosoft Accessにクエリを実行したり、ooRexxScript を使用してMicrosoft Excel、Quattro Pro、Microsoft Word、Lotus Notesなどで実質的に Rexx マクロを作成したり、 XLNTスクリプトを使用して環境変数を取得して新しいTextPadドキュメントに印刷したりすることができます。
Microsoft Office、Open Office ( Pythonやその他のインストール可能なマクロ言語も含む)、 Corel WordPerfect OfficeのVBA機能はWSHエンジンとは別個のものであるが、Outlook 97はマクロ言語としてVBAではなくVBScriptを使用している。[ 8 ]
ActiveState PythonScriptの形式のPython は、 PerlScript、ooRexxScript、PHPScript、RubyScript、LuaScript、XLNTなど、エンジンがインストールされている他の言語と同様に、SecureCRTのデータを自動化およびクエリするために使用できます。注目すべき例外はPaint Shop Proで、PythonScript WSH エンジンや、 Unixエミュレーションおよび統合ソフトウェア スイートに付属する Python インタープリタ、その他のスタンドアロン Python 実装など外部の Python 実装を中間として使用するのではなく、PSP プログラム自体内のマクロ インタープリタを使用して Pythonで自動化できます[ 9 ] [ 10 ] 。実際、サードパーティの Python インストールがない場合でもこのようにプログラムできます。Rexx でプログラム可能なターミナル エミュレータ Passport も同様です[ 11 ] 。SecureCRT ターミナルエミュレータ、 SecureFX FTP クライアント、および Van Dyke の関連クライアントおよびサーバー プログラムは現在のバージョンでは WSH によって自動化されているため、エンジンがインストールされている言語であればどれでも使用できます。このソフトウェアには、VBScript、JScript、およびPerlScriptのサンプルが付属しています。
最新のリリース以降、そして数バージョン前までさかのぼって、最新の実装における4NT / Take Commandのプログラミング機能 (Perl、Python、Tcl、Ruby、Lua、VBScript、JScript などのための "@REXX" など) は、一般的に WSH エンジンを使用しています。 [ 12 ] ZOCターミナル エミュレータは、外部インタープリタ (そのうちの 1 つはプログラムに付属) によって Rexx でプログラミングできる機能を持ち、代替の Rexx インタープリタはプログラムの設定で指定できます。[ 13 ] [ 14 ] MKS ツールキットは、パッケージに付属する標準の Perl インタープリタ perl.exe に加えて、WSH エンジンである PScript を提供します。
VBScript、JScript、および一部のサードパーティ製エンジンは、テキストエディタでの編集を不可能にするエンコード形式でスクリプトを作成および実行する機能を備えています。これらのエンコードされたスクリプトのファイル拡張子は、.vbe、.jse、および同種のものです。
特に指定がない限り、任意の WSH スクリプト エンジンをさまざまな Windows サーバー ソフトウェア パッケージで使用して CGI スクリプトを提供できます。デフォルトの WSH エンジンの現在のバージョンと、サードパーティ エンジンのすべてまたはほとんどにはソケット機能もあります。CGI スクリプトとして、またはそれ以外の場合、PerlScript はこの目的で多くのプログラマーに選ばれており、VBScript およびさまざまな Rexx ベースのエンジンも、接続性とテキスト処理機能において十分強力であると評価されており、有用です。これはファイル アクセスと処理にも当てはまります。VBScript および JScript 用の初期の WSH エンジンは、ベース言語にこの機能がなかったため、この機能を持っていません[ 15 ]一方、PerlScript、ooRexxScript などは、最初からこの機能を持っています。
WinWrap Basic、SaxBasicなどはVisual Basic for Applicationsに似ています。これらのツールは、開発中のソフトウェアにスクリプト機能やマクロ機能を追加するために使用され、たとえばHost Explorerの以前のバージョンに含まれています。他の多くの言語もこの方法で使用できます。プログラムのスクリプトに使用される他の言語には、Rexx、Tcl、Perl、Python、Rubyなどがあり、オペレーティングシステムやスプレッドシート、データベースプログラムのオブジェクトを制御するメソッドが付属しています。[ 16 ]例外として、Zocターミナルエミュレータは、パッケージに付属のRexxインタープリタ、またはユーザーが指定した別のインタープリタによって制御されます。これはPassportエミュレータの場合も同様です。
VBScript はMicrosoft Outlook 97のマクロ言語であり、 WordBasicは Word 6 まで、PowerPoint およびその他のツールで使用されています。Excel 5.0 までは Visual Basic 5.0 を使用しています。Office 2000 以降では、すべてのコンポーネントで真の Visual Basic for Applications 6.0 が使用されています。その他のコンポーネントはVisual Basic for Applicationsを使用しています。OpenOfficeはマクロ言語として Visual Basic、Python などを使用しており、さらに追加することも可能です。LotusScriptはVBA と非常に密接に関連しており、Lotus NotesおよびLotus SmartSuiteで使用されています。Lotus SmartSuiteには、Lotus Word Pro (現在のAmi Proの後継)、Lotus Approach、Lotus FastSite、Lotus 1-2-3などが含まれます。また、Microsoft からライセンスを受けた純粋な VBA は、 WordPerfect、Paradox、Quattro Proなどの Corel 製品で使用されています。
Windowsにインストールされているスクリプト言語は、PerlScript、PythonScript、VBScriptなどの外部エンジンを介してアクセスできます。また、利用可能な他のエンジンを使用して、データベース(Lotus Notes、Microsoft Access、Oracle Database、Paradox)、スプレッドシート(Microsoft Excel、Lotus 1-2-3、Quattro Pro)、ワードプロセッサ、ターミナルエミュレータ、コマンドシェルなどのツールにアクセスできます。これはWSHを介して実現できるため、エンジンがインストールされていれば、どの言語でも使用できます。
Take Command の拡張コマンド プロンプトおよびツールの最近のバージョンでは、シェル プロンプトで「script」コマンドを入力すると、現在インストールされているエンジンの一覧が 1 行に 1 つずつ、つまり CR-LF 区切りで表示されます。[ 17 ] [ 18 ] [ 19 ]
最初の例は非常にシンプルなプログラムです。このプログラムは、ルートWSH COMオブジェクト「WScript」を使用して「OK」ボタン付きのメッセージを表示するVBScriptHello, worldを示しています。このスクリプトを実行すると、CScriptまたはWScriptエンジンが呼び出され、実行環境が提供されます。
ファイルの内容hello0.vbs
WScript.Echo ( " Hello world " ) WScript.Quit ( )WSHプログラミングでは、JScript言語も使用できます。
ファイルの内容hello1.js
WScript.Echo ( " Hello world" ) ; WScript.Quit ( ) ;または、VBScriptとJScriptなど、他の言語のコードを1つのWSFファイルに混在させることもできます。
ファイルの内容hello2.wsf
<job> <script language= "VBScript" > MsgBox "hello world (from vb)" </script> <script language= "JScript" > WScript.Echo("hello world (from js)"); </script> </job>Windows アプリケーションやプロセスは、Windows Script Host のスクリプトを使用して自動化できます。この機能を悪用するウイルスやマルウェアが作成される可能性があるため、セキュリティ上の理由から無効にすることを推奨する人もいます。[ 20 ]あるいは、アンチウイルス プログラムには、WSH 環境で実行される .vbs やその他のスクリプトを制御する機能がある場合があります。
WSH バージョン 5.6 以降では、有効な証明書がシステムに存在する場合、スクリプト自体のScripting.Signerオブジェクトを使用してプログラム的にスクリプトにデジタル署名できます。あるいは、WSH ファイルタイプをサポートするように拡張された Platform SDK の signcode ツールをコマンドラインで使用することもできます。[ 21 ]
Windows XPで導入されたソフトウェア制限ポリシーを使用することで、信頼できる場所に保存されているスクリプト、既知のMD5ハッシュを持つスクリプト、または信頼できる発行者によってデジタル署名されたスクリプトのみを実行するようにシステムを構成できるため、信頼できないスクリプトの実行を防ぐことができます。[ 22 ]
注: 定義上、これらのスクリプト エンジンはすべて、任意の数のプログラムと設定で Windows のCGIプログラミングに利用できます。つまり、CGI 目的でサーバー上で使用されるスクリプトのソース コード ファイルには、.cgi などの他のファイル拡張子が付く可能性があります。前述の Windows Script Host の機能により、拡張子.wshのファイルで複数の言語を含むスクリプトを実行できます。拡張HTMLとXMLも、ネットワークで使用するスクリプトを扱う際に、Active Server Pagesなどと同様に、追加の可能性をもたらします。さらに、Windowsシェル スクリプト、 TCC、4NTなどの拡張機能を備えたシェルで記述されたスクリプト、およびMKS Toolkitなどの相互運用ソフトウェアの下で動作する Unix シェルにも、スクリプトを埋め込むことができます。
LotusScript、SaxBasic、BasicScript、KiXtart、awk、bash、csh、その他のUnixシェル、4NT、cmd.exe(Windows NTシェル)、Windows PowerShell、DCL、C、C++、Fortranなどの他の言語用のエンジンを作成する提案がありました。[ 24 ] XLNT言語[ 25 ]はDCLに基づいており、言語の非常に大きなサブセットに加えて追加のコマンドとステートメントを提供し、このソフトウェアは、WSHエンジン(*.xcs)、コンソールインタープリタ(*.xlnt)、およびサーバー側とクライアント側のCGIエンジン(*.xgi)の3つの方法で使用できます。[ 26 ]
Windows Internet Information Server、Apacheのポートなど、CGIを実装するサーバーでは、ほとんどすべてのエンジンを使用できます。最も一般的に使用されているのは、VBScript、JScript、PythonScript、PerlScript、ActivePHPScript、およびooRexxScriptです。MKS Toolkit PScriptプログラムもPerlを実行します。cmd.exe、4NT、kshなどのコマンドシェル、および文字列処理機能とソケット機能を備えたスクリプト言語もCGIスクリプトに使用できます。C++、Visual Basic、Javaなどのコンパイル言語も同様に使用できます。すべてのPerlインタープリタ、ooRexx、PHP、およびVBScriptとJScriptの最新バージョンは、TCP/IPにソケットを使用し、通常はUDPやその他のプロトコルを使用します。
WSH バージョン 5.6 の再頒布可能版は、Windows 95/98/Me および Windows NT 4.0/2000 にインストールできます。WSH 5.7 は、Windows 2000、Windows XP、および Windows Server 2003 向けにダウンロード可能です。2006年以降、旧バージョンのオペレーティングシステム (Windows 9x および Windows NT 4.0) 用の再頒布可能版は、Microsoft ダウンロード センターから入手できなくなりました。
Windows XP Service Pack 3以降、リリース5.7がMicrosoftから提供される唯一のバージョンであり、それ以降の新しいバージョンのWindowsには、より新しい改訂版が組み込まれています。