Windows Script Host

出典: 謎の百科事典もどき『エンペディア(Enpedia)』
ナビゲーションに移動 検索に移動

Windows Script Host(しばしば「WSH」と略される。本記事においてもWSHの略称を用いる)は、Microsoft Windowsに標準搭載されているインタープリター(スクリプトを読み込んで各種処理を行うエンジン)。

機能とリスク[編集]

バッチファイルは、(いちいち手入力するのではなく)処理を自動的に行うための仕掛けとして、MS-DOS時代から今日のWindowsに至るまで機能維持・機能強化され、今なお利用され続けている。
しかしながら、良くも悪くもMS-DOSから続く「制限」も引き継いでしまっており(互換性維持のため)、複雑な処理をやってもらうには役不足。
マイクロソフトはバッチファイルには出来ない複雑な処理を担うべく、Windows 98向けにWSHを開発。当時多くのIT技術者にとって馴染みのあるVisual Basic風の「VBScript」、またはJavaScript風の「JScript」いずれかのスクリプト言語で記述し、Windowsシステム:管理やレジストリ操作など、かなり高度な処理をこなせる機能を持つ。
Windows 98以降のWindowsであれば別途プログラムをインストールすることなくスクリプトが動作し、高度な処理を行わせることでWindowsシステム管理を省力化できるWSHは、IT技術者を中心に長く愛用されている。提供するマイクロソフト自身も、Windows管理のための便利なWSHスクリプトを複数公開している。例えばプリンターを自動的にインストールするスクリプト郡(C:\Windows\System32\Printing_Admin_Scripts\ja-JPフォルダ内)はWindows 11に至るまでも普通に現役。
一方で、強力すぎる機能は逆にセキュリティ上のリスクも孕み、実際にシステムの盲点を突くWSHコンピューターウイルスも出回り、セキュリティ責任者からは煙たがられるようになってしまう。マイクロソフトWindows XP辺りからセキュリティを意識せざるを得なくなり、後継のPowerShellを開発。PowerShellスクリプトはWSHスクリプトと異なり、通常の設定ではスクリプトファイルをダブルクリックしても直ちには実行されないようになっている。
PowerShell登場以降、WSHへの新機能追加は停止されている(セキュリティ関連のバグ修正は継続中)。Windows 11の将来のバージョンにてVBScriptが標準機能から「オプション機能」への降格、そして将来の機能削除が発表されている。JScriptについては廃止について言及されていないが…。

主な使い方・注意点[編集]

WSHスクリプトはVBScript(拡張子vbs)またはJScript(拡張子js)いずれかのスクリプト言語で記述する。VBSとJSでは文法が結構異なり、また片方では出来ても片方では(そのままでは)出来ない機能がいくつか存在する(VBSのMsgBoxやInputBoxなど)。どちらの言語を採用すべきかは完全に好み(Visual Basic、JavaScriptのどちらに詳しいか)。
例)「WScript.Echo "Hello, Enpedia!"」と記述したテキストファイルを拡張子「vbs」で保存。ダブルクリックして実行すると「Hello. Enpedia!」というメッセージダイアログが表示される。
例)「WScript.Echo("Hello, Enpedia!");」と記述したテキストファイルを拡張子「js」で保存。ダブルクリックして実行すると「Hello. Enpedia!」というメッセージダイアログが表示される。
本記事では詳しい記述内容はとても書ききれません…(プログラミング言語の話になり、内容が膨大)。「WSH入門」等とググってください…。
テキスト形式でスクリプトファイルを記述し、拡張子をvbsまたはjsへ変更。ダブルクリックすると、特にエラーがなければスクリプトが実行される。
WSHはファイル操作やレジストリ操作、システム設定値の変更やWebブラウザ自動操作など、かなり強力な機能を持つ。逆に言うと適当に拾ってきたスクリプトを不用意に実行することは、システムを破壊したり情報を漏洩させたりしかねない非常に危険な行為。内容がよく分からないスクリプトはみだりに実行すべからず。実際、電子メールサーバー・メールソフトのほとんどは利用者保護のため、スクリプトつきメールを「ウイルスメールの恐れあり」として無効化・隔離などを行う。
ここまで書いておいてアレだが、WSHはもはや機能追加が行われず、VBScriptについては将来、機能削除されることが発表されている。今から学習するのであればPowerShellをお勧め。または要インストールが許容出来るのであればPythonなど選択肢はたくさんある。

参考文献[編集]

関連項目[編集]