Windows Script Host
ナビゲーションに移動
検索に移動
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の将来のバージョン(2027年ごろ)にてVBScriptが標準機能から「オプション機能」への降格(デフォルトでは無効になり、利用するには有効化の操作が必要)、そしてさらに将来には機能が完全に削除されるスケジュールが発表されている。
主な使い方・注意点[編集]
- 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で記述されたコンピューターウイルスが実在することもあって、スクリプトの中身までチェックするウイルス対策ソフトはスクリプト内に「ウイルスが良く使う機能」が含まれているというだけで警告を発するし、或いはセキュリティをガチガチに厳しくした環境では「こいつ、システム管理者でもないのにWSHスクリプト使ってる。怪しい」とマークされる。
- ここまで書いておいてアレだが、WSHはもはや機能追加が行われず、VBScriptについては将来、機能削除されることが決定している。今から学習するのであればPowerShellをお勧め。または要インストールが許容出来るのであればPythonなど選択肢はたくさんある。「自動化したい」という目的に対しては各種「RPA」(Robotic Process Automation。Power Automateなど)が出ている。
- WSHのもうひとつの言語であるJScriptについては現地点では廃止についての言及はない。また、Visual Basic言語を用いるもうひとつの機能「Visual Basic for Application」(Microsoft Office製品に搭載され、Officeアプリケーションの自動操作を可能にする)についても現地点では廃止についての言及はない。しかしながら「現地点では廃止しない」と言っていても1週間後或いは1ヶ月後にしれっと「廃止します」と発表されるのはIT業界ではしばしば行われる。マイクロソフトは「周知期間・移行期間」として数年という単位で時間的猶予を設けるだけまだマシ。「まだ使える」ではなく「時間があるうちに移行を検討」すべし。
参考文献[編集]
- “「Visual Basic」は.NET Coreでもサポートを継続 ~ただし、言語としての発展は終わり - 窓の杜”. 2024年6月16日確認。
- “「VBScript」は2027年頃にデフォルトで無効に ~非推奨化スケジュールが公開 - 窓の杜”. 2024年6月16日確認。