PR

 米Microsoftはまもなく,新しいコマンド・ライン環境である「Windows PowerShell」をリリースする。Windows PowerShellがすぐに,既存のMS-DOSベースのコマンド・ライン環境である「cmd.exe」に取って代わることはないだろう。それでもPowerShellには,ユーザーが今すぐ試せる便利な機能が搭載されている。今回はその機能を少し紹介しよう。

 まず最初に,ユーザーの誤解を解いておきたい。先に述べたように,PowerShellが今すぐcmd.exeを置き換えるわけではない。PowerShellは将来のWindowsで,段階的にcmd.exeを置き換えていくだろう。また下位互換性のために,cmd.exeが今後も提供され続ける公算は高い。

 またPowerShellが,Microsoftやサード・パーティが提供するGUIベースの管理ツールを置き換えることもないだろう。通常これらの管理ツールは,マイクロソフト管理コンソール(MMC)のスナップインになっている。管理タスクの中には,簡単に自動化できるものがあり,そうしたタスクにとってはコマンド・ライン・ベースの環境が最適である。ただcmd.exeはあまりに機能が少ないので,MicrosoftはPowerShellを用意したのだ。将来的にWindows管理者は,GUIツールとコマンド・ライン・ツールを組み合わせて使うことになるだろう(もちろんPowerShellは,Exchange ServerのようなWindows以外の製品と組み合わせることも可能だ)。

 PowerShellを使うためには.NET Framework 2.0が必要である,.NET Frameworkが備えるオブジェクト指向の利点の多くを受け継いでいる。特に個々のPowerShellコマンド(cmdlet,スモール・コマンド)は,お互いの構造化テキスト情報をオブジェクトとしてやり取りする。環境内で利用できるそれぞれのcmdletが,分かりやすくて一貫性のある方法でインプットとアウトプットを行っているという点で,PowerShellには一貫性がある。

 それはさておき,PowerShellを起動すると「PowerShell C:\Documents and Settings\Paul>」のように,プロンプトが表示されるが,この画面でも数多くの便利な機能が実行できることは,注目した方がいいだろう。

 最も分かりやすいのは,cmdletのオート・コンプリート機能だ。cmdletの最初の部分(例えば「get-c」,「」は除く)を入力してTabキーを押すと,利用可能なcmdletコマンドが順番に表示される(図1)。

図1●PowerShellでオート・コンプリートを使ったところ

 このケースだと,「get-command」や「get-content」,「get-credential」といったコマンドが表示される。cmdletを覚えるのが苦手な人にとって,この機能は有用だろう。だが時間を節約したい人にとっても,この機能は役に立つ。cmdletの最初の部分だけを入力すれば,後はTabキーを使ってコマンドを完成させるだけでいいのだから。

 例を挙げると,「get-process」と呼ばれるcmdletには,現在実行されているプロセスに関する情報の一覧表を返す働きがある。この一覧表は,いろいろな方法で絞り込むことが可能だ。例えば,「get-process c*」と入力すると,cで始まるプロセスの情報のみを返すようになる(図2)。

図2●cで始まるプロセスの情報を絞り込んで表示したところ
[画像のクリックで拡大表示]

 どちらの場合でも,出力結果はテキストで構成される整然とした表形式で表示される。cmdletは,この表の作成と使用の両方を行うように設計されている。さらにcmdletは,「動詞-名詞」という形式(例えば,「get-process」)にのみ従うというこに注意する必要がある。こうした命名法は,cmdletを覚えるのに役立つはずである。なぜならこれらの名称は,実行しようとしているタスクを非常に分かりやすく表しているからだ。

 このほかPowerShellには,便利なループ機能や条件指定機能,変数スコープ,そして完全な.NETプログラミング言語に人々が期待するであろう多くの機能を提供している。今後の解説記事で,これらの機能,そしてPowerShellがいかにして管理者の負担を軽減するのかについて,考察してみたいと思う。