先日Windowsの環境変数について調べた際に、久しぶりにWSH用のJScriptを書いた。WSHはMicrosoftが提供するWindows用のスクリプト実行環境だ。
WSHの利点はWindowsにプリインストールされているという事だ。Wikipediaに拠ると、 Windows 98 以降であれば確実に入っているという。(RubyやPerl等とは異なり、)別途実行環境を用意する必要がないので、作成したスクリプトを配布する際にとても便利だ。
しかし、今となっては甚だ時代遅れで使いづらい。例えば配列の全要素を舐めるのに Array.forEach()
が使えなかったり。現代のJavaScriptに触れていると、「あれも無い、これも無い」という点が気になってしまう。
流石にこれではキツイ。そこで Windows PowerShell に目を付けた。PowerShellはMicrosoftが新たに開発したコマンドラインシェル環境だ。これがまぁ意外と良い感じ。 Windows 7 からはプリインストールされているらしいし、将来的には導入コストは0になるだろう。
勿論、WSHはスクリプト実行環境でPowerShellはシェル環境なので、単純に比べられる物ではない。WSHとcmd.exeを合わせたものと比べるべきなのかもしれない。今までこの2つで行っていた作業をPowerShellで行うようにしてみたが、今のところ問題は発生していない。
個人的には、ドライブの機能に注目している。ディスクアクセスに用いるドライブレターのような識別子を用いて、様々なデータへのアクセスを共通のコマンドで行えるようにした仕組みだ。例えば、カレントディレクトリ以下のファイル/ディレクトリの一覧はGet-ChildItem
コマンドレットで取得出来るが、Envという名のドライブへ移動した後なら同じ方法で環境変数の一覧を取得出来る。この仕組みはコマンドラインシェル以外にも応用が利きそうだ。エクスプローラのようなファイラ風のインタフェイスを備えたソフトから様々なデータにアクセスしたり。