[運用]

Windowsスクリプティング環境比較:PowerShell vs WSH

―― 伝統のWSH 対 先進のPowerShell、どっちを使う? ――

1.PowerShellのインストールと動作確認

Microsoft MVP
Visual Developer - Scripting
牟田口 大介
2007/04/12

Windowsスクリプティング環境:旧来のWSHと新しいPowerShell

 Windowsを使っていて、定型作業を手動で繰り返し行うのは苦行としかいいようがない。例えば大量のファイル群から必要なファイルを探し出し、別のフォルダにドラッグ・アンド・ドロップして、そのファイルをワープロ・アプリケーションで開いて、ある文字列を置換して……、などということを複数のファイルに対して行う必要があり、しかもそれを毎日やらなければならないときたら、キーボードをたたき壊したくなるのではないだろうか?

 せっかくコンピュータを使っているのだから、手作業で行ってきたこのような定型作業をコンピュータにやらせたいと思うのが人情だ。幸いにしてWindowsには古くからコマンド・プロンプト上で動作する「バッチ・ファイル」という、一連の動作(アプリケーションを起動したりファイルをコピーしたり文字列を検索したり)を自動化する仕組みが備わっている。

 だがバッチ・ファイル単独ではそれほど大したことができないので、さまざまな外部コマンドを併用しないといけないのだが、これらの複雑なコマンドを使いこなすのはなかなか骨が折れる。

連載:チェック式WSH入門
連載:管理者のためのWSH入門

 そこで、もっと習得を容易に、かつ、さまざまなことを実行可能にするために、Windows 98から「WSH(Windows Script Host)」というアプリケーション(実行環境)が搭載されるようになった。これはその名のとおり、スクリプト(Script)を実行する環境を提供するものである。ではスクリプトとは何であろうか? 英和辞書をひもとくと、Scriptという単語には「台本」「脚本」などの日本語訳がされていることが多い。すなわち、定型作業をスクリプト・ファイル(ちなみにこれはプレーンなテキスト・ファイルである)という台本に書き起こし、コンピュータに演じさせる(実行させる)わけである。スクリプトを記述するための言語がスクリプト言語だ。WSHではデフォルトでVBScriptとJScriptという2つの言語が利用可能である。スクリプト言語はプログラミング言語(C、C++、Javaなど)に比べると、文法が平易で習得が容易であるという特徴を持つ。

 WSHはVer.1.0からバージョンアップが続けられ、現在Windows XP/Windows Server 2003にはVer.5.6、Windows Vistaには最新版のVer.5.7が搭載されている(OSやサービスパック、パッチの有無によってマイナーな差異は存在するが、基本的には機能は同じである)。だが少し疑問を持たれるかもしれない。Windows XPがリリースされ、先日Windows Vistaがリリースされるまで何年も経過したにもかかわらず、WSHのバージョンはVer.5.6からVer.5.7へとマイナー・バージョンアップにとどまっている。実はWSHは今後メジャー・バージョンアップされない運命にあるのだ。

 では今後さまざまな進化を遂げるであろうWindowsに対して、旧来のWSHですべてをカバーしていかなければならないのかというとそうではなく、マイクロソフトは新しいスクリプト実行環境を開発し、先日それを正式リリースした。その名も「Windows PowerShell」(以下、単にPowerShellと表記)という。

 PowerShellはその名のとおり、Windowsで動作するシェルの1つである。シェルとはユーザーの入力に対し、その内容を解釈し実行したのち結果を画面に表示するアプリケーションである。Windowsのシェルとしては標準でコマンド・プロンプトが存在しており、システムの管理などに用いられている。しかし、コマンド・プロンプトの内部コマンドや、コマンド・プロンプトから呼び出す外部コマンドの使用方法は、新しいOSがリリースされるたびに複雑化する一方であった。その原因の1つとして、コマンド・プロンプトでは入力も出力も、すべてテキスト(文字列)を扱うことが挙げられる。マイクロソフトはこのような複雑化するテキスト・ベースのシェルとは別に、.NET Frameworkというクラス・ライブラリを使用し、そのオブジェクトを扱うシェルとしてPowerShellを新たに開発した。

 そして、コマンド・プロンプトにバッチ・ファイルという自動化の手段が用意されていたように、PowerShellにもスクリプト機能が用意されている。このPowerShellのスクリプトが、WSHの後継になると考えられている。

 それならこれからはPowerShell全盛時代になり、WSHはまったく使われなくなるので、WSHを学習せずPowerShellの習得に全力を注ぐべきであると性急に結論を出してはいけない。実は、PowerShellにもいくつか問題点があり、WSHを使用した方がよりよい局面も存在するのだ。本記事では、WSHとPowerShellをさまざまな視点から対比させ、どういう場合にどちらを使えばいいのか、という点を考察してみたい。

PowerShellの入手とインストール

次世代Windowsシェル「Windows PowerShell」を試す

 本稿ではWSHとPowerShellの対比をメインに扱うが、その前に、簡単にPowerShellのインストール方法と利用方法について解説しておく。PowerShellに関する、より詳しい解説については先のWebページや、関連記事の解説を参照していただきたい。またPowerShellをインストールすると、[スタート]メニューに「リリース ノート」や「はじめに(ファースト ステップ ガイド)」「ユーザー ガイド(PowerShell入門)」「クイック リファレンス(PowerShellランゲージ クイック リファレンス)」が用意されるので、ひととおり目を通しておくとよいだろう(Windows Vistaの場合は「Documents\ua-JP」フォルダの中を参照)。

 現在のところ、PowerShellはWindows OS標準のコンポーネントではなく、ユーザーが以下の場所から自分でダウンロードしてシステムにインストールする必要がある。OS別にインストール・パッケージが用意されているので、適切なものをダウンロードしてインストールする(いずれもVer.1.0)。インストールには管理者権限が必要である。

 PowerShellは以下の環境にインストールできる。

  • Windows XP SP2もしくはWindows Server 2003 SP1以降、Windows Vista
  • .NET Framework 2.0以上(Windows Vistaの場合は.NET Framework 3.0があらかじめインストールされているので追加インストールは不要)

 必要に応じてService Packや.NET Framework 2.0、もしくは.NET Framework 3.0をインストール後、OSに応じて以下のインストール・ファイルをダウンロードしてインストールしておく。

PowerShellの動作の確認

 PowerShellをインストールすると、[スタート]メニューに[すべてのプログラム]−[Windows PowerShell 1.0]−[Windows PowerShell]という項目が用意されるので、これをクリックしてPowerShellを起動する。

PowerShellを使ってみる
[スタート]メニューの[すべてのプログラム]−[Windows PowerShell 1.0]−[Windows PowerShell]を実行すると、このような独立したPowerShellのウィンドウが表示される。コマンド・プロンプトを開いて利用するのと同じように、コマンドとパラメータを指定して[Enter]キーを押すと実行される。利用できるコマンドレットの一覧はGet-Command(もしくはhelp)で表示される。
  ウィンドウ・タイトルでPowerShellであることが分かる。
  プロンプト・文字列の「PS」はPowerShellの頭文字。これによりコマンド・プロンプトではなく、PowerShellが動作中であることが明確となっている。
  カレント・ディレクトリのパス。
  コマンドを入力するプロンプト部分。図ではGet-ChildItemコマンドレットを実行している。
  ディレクトリ名の正式表示。Microsoft.PowerShell.CoreはPowerShellの基本機能を含んだPSスナップイン。FileSystemはファイルシステム・プロバイダを意味する。
  Get-ChildItemコマンドレットの結果表示。カレント・ディレクトリに含まれるファイルの一覧が表示されている。
  コマンドの実行が終わるとプロンプトが戻り、ふたたびコマンド入力可能となる。

 コマンド・プロンプトを開いて作業する場合と同様に、コマンド(PowerShellでは「コマンドレット(Cmdlet)」という)とパラメータを指定して[Enter]キーを押すと実行される。例えば、現在のフォルダにあるフォルダ名とファイル名の一覧を表示するには、Get-ChildItemコマンドレットを実行する。「dir」か「ls」と入力することでも可能である(lsは、UNIX上で動作するシェルにおけるファイル名一覧の表示コマンド)。これらは、Get-ChildItemコマンドレットのエイリアス(別名)である。実際のコマンドレット名は「Get-Alias dir」などとすると確認できる。また利用できるコマンドレットの一覧はGet-Commandコマンドレットで表示できる。またコマンドレットの使い方を調べるには、Get-Helpコマンドレットを用いる。例えばGet-Commandコマンドレットのヘルプを引くには、「Get-Help Get-Command」などとする。ほかにもGet-Commandコマンドレットで引けるヘルプ・トピックスがあるが、その一覧は「Get-Help *」と入力することで得られる。

 

 INDEX
  [運用]Windowsスクリプティング環境比較:PowerShell vs WSH
  1.PowerShellのインストールと動作確認
    2.アプリケーションとしての比較
    3.スクリプト機能の比較(1)
    4.スクリプト機能の比較(2)
 
 運用


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間