Windows PowerShell の設計には、複数の異なる環境の概念が取り入れられています。特定のシェルやプログラミング環境を使ったことのあるユーザーであれば、そのいくつかについては既に使い慣れているかもしれません。しかし、これらすべてに精通しているユーザーはごく一部に限られると思われます。Windows PowerShell がどのようなものであるかを理解する近道は、これらの概念について考察することです。

コマンドが非テキストベースである

従来のコマンドライン インターフェイスで使用されていたコマンドとは異なり、Windows PowerShell のコマンドレットは、オブジェクトを扱うように設計されています。オブジェクトは、単に画面上に表示される文字列ではなく、構造化された情報です。コマンドの実行結果は常に補足的な情報を伴って出力され、この情報は必要に応じて使用できます。この点については、このマニュアルの中で詳しく解説されています。

過去にテキスト処理ツールを使ってコマンドライン データを加工したことのある方であれば、Windows PowerShell の従来との違いが明らかにわかることと思います。ほとんどの場合、テキスト処理ツールを使用して特定の情報を抽出する必要はありません。Windows PowerShell の標準的なオブジェクト操作コマンドを使用して、データに含まれる情報に直接アクセスできるためです。

コマンドを拡張できる

Cmd.exe などのインターフェイスには、組み込みのコマンド セットを直接拡張する手段が存在しません。外部のコマンドライン ツールを作成して Cmd.exe で実行することはできますが、外部のツールには、ヘルプを統合することができないなど、サービス上の制約があります。また、Cmd.exe では、それらが有効なコマンドであるかどうかを自動的に判別することはできません。

Windows PowerShell のネイティブのバイナリ コマンドは "コマンドレット" と呼ばれ、ユーザーが自由に拡張できます。コマンドレットを独自に作成し、スナップインを使用して Windows PowerShell に追加できます。Windows PowerShell スナップインは、他のあらゆるインターフェイスのバイナリ ツールと同じようにコンパイルされています。これらを使用することにより、新しいコマンドレットだけでなく、Windows PowerShell プロバイダーをシェルに追加することもできます。

Windows PowerShell の内部コマンドがコマンドレットと呼ばれているのは、こうした特殊な性質によるものです。

注意事項:

Windows PowerShell では、コマンドレット以外のコマンドも実行できます。この点については、『Windows PowerShell ユーザー ガイド』で詳しく取り上げていませんが、コマンドの種類として、そのようなカテゴリもあるということは覚えておいてください。Windows PowerShell は、UNIX のシェル スクリプトや Cmd.exe のバッチ ファイルに似たスクリプト (ファイル名の拡張子は .ps1) をサポートしています。また、Windows PowerShell では、インターフェイスまたはスクリプトから直接使用することのできる内部関数を作成することもできます。

Windows PowerShell によってコンソールの入力と表示が処理される

コマンドを入力すると、常に、コマンドラインの入力が Windows PowerShell によって直接処理されます。また、出力は、ユーザーに対して表示する形式へと自動的に書式化されます。これによって、コマンドレットごとの実装要件が軽減され、どのコマンドレットの場合も常に同じ方法で使用できるようになります。このことがツール開発者とユーザーの両方にもたらす利点の一例として、コマンドライン ヘルプが挙げられます。

従来のコマンドライン ツールでは、ヘルプの要求と表示に独自の体系が採用されていました。ヘルプを表示させるときのオプションも、/?-?/H// など、コマンドライン ツールによって違いがあります。ヘルプをコンソールではなく GUI ウィンドウで表示するコマンドライン ツールも存在します。アプリケーション更新ツールなど、複雑なツールになると、内部のファイルを展開してからヘルプを表示するものもあります。間違ったパラメーターを使用すると、入力内容が無視され、タスクが自動的に実行される可能性もあります。

Windows PowerShell でコマンドを入力すると、入力したすべての情報に対し、解析と前処理が自動的に実行されます。Windows PowerShell のコマンドレットでは、-? パラメーターを使用すると、常に "このコマンドのヘルプを表示する" という意味になります。コマンドレットの開発者は、ヘルプ テキストを用意するだけでよく、コマンドを解析するための処理を自ら実装する必要はありません。

注目しなければならない点は、Windows PowerShell のヘルプ機能は、従来のコマンドライン ツールを Windows PowerShell で実行する場合にも利用できるという点です。パラメーターは Windows PowerShell によって処理され、その結果が外部のツールに渡されます。

注意事項:

Windows PowerShell でグラフィック アプリケーションを実行した場合は、そのアプリケーションのウィンドウが開きます。Windows PowerShell が介在するのは、ユーザーによって指定されたコマンドライン入力を処理するときと、コンソール ウィンドウに返されたアプリケーション出力を処理するときだけです。アプリケーション内部の動作には影響しません。

Windows PowerShell では C# の構文が一部使用される

Windows PowerShell は .NET Framework をベースとしているため、Windows PowerShell の構文とキーワードは C# プログラミング言語に非常に似ています。C# 言語に興味がある方は、Windows PowerShell の使い方を覚えることにより、C# の習得にもつながります。

C# プログラマではないユーザーにとって、この類似性は特に重要な意味を持ちません。しかし、C# に精通している場合は、Windows PowerShell の使い方を覚えるのはとても簡単です。




目次