Windows PowerShell 言語仕様 3.0

Windows PowerShell 言語仕様 3.0 は PowerShell 3.0 をベースとし、2012 年 12 月に公開されました。 仕様ドキュメントは、Microsoft Word ドキュメントとして Microsoft ダウンロード センター (https://www.microsoft.com/download/details.aspx?id=36389) から提供されています。

この Word ドキュメントは、docs.microsoft.com でプレゼンテーション用に変換されています。 変換中、Docs プラットフォームの書式設定に対応するために、編集上の変更がいくつか行われています。 一部の入力ミスと軽微なエラーが修正されています。

重要

このドキュメントの内容には、現バージョンの PowerShell の現在の状態が反映されていない場合があります。 現在の状態を反映するようにこのドキュメントを更新する予定はありません。 ここでは、このドキュメントは履歴参照目的で示されています。

1.はじめに

PowerShell は、特にシステム管理者用に設計されているコマンドライン シェル およびスクリプト言語です。

ほとんどのシェルは、新しいプロセスでコマンドまたはユーティリティを実行し、結果をテキストとしてユーザーに表示することで動作します。 これらのシェルには、シェルに組み込まれた、シェル プロセスで実行されるコマンドも含まれています。 組み込みのコマンドは少ないため、それらを補完するために多くのユーティリティが作成されています。 PowerShell は、これらとは大きく異なります。 このシェルでは、テキストを処理する代わりに、オブジェクトを処理します。 PowerShell には、それぞれ一貫性のあるインターフェイスを持つ多数の組み込みコマンドも含まれています。これらは、ユーザーが作成したコマンドで動作できます。

オブジェクト は、プロパティ (特性) と メソッド (オブジェクトに対して実行できるアクション) を持つデータ エンティティです。 同じ型のすべてのオブジェクトには、プロパティとメソッドの同じ基本セットが含まれていますが、オブジェクトの各 インスタンス は異なるプロパティ値を持つ場合があります。

オブジェクトを使用する主な利点としては、コマンドの パイプライン処理 (あるコマンドの出力を別のコマンドに入力として書き込む処理) がはるかに簡単になります (従来のコマンドライン環境では、あるコマンドからのテキスト出力を、別のコマンドの入力形式を満たすように操作する必要があります)。

PowerShell には、ループ、条件、フロー制御、変数の割り当てのためのコンストラクトをサポートする、非常に豊富なスクリプト言語が含まれています。 この言語には、C# プログラミング言語 (§C) で使用されるものに類似した構文機能およびキーワードが含まれています。

PowerShell には、スクリプト、関数とメソッド、コマンドレット、ネイティブ コマンドの 4 種類のコマンドがあります。

  • コマンドのファイルは スクリプト と呼ばれます。 規則により、スクリプトのファイル名拡張子は .ps1 です。 PowerShell プログラムの最上位レベルはスクリプトで、これにより、他のコマンドを呼び出すことができます。

  • PowerShell では、名前付きプロシージャを使用したモジュール型プログラミングがサポートされています。 PowerShell で記述されたプロシージャは 関数 と呼ばれるのに対し、実行環境で使用できる外部プロシージャ (通常は他の何らかの言語で記述される) は メソッド と呼ばれます。

  • コマンドレット は、単一タスクの単純なコマンドライン ツールです。 コマンドレットは単独で使用することもできますが、複雑なタスクを実行するために組み合わせて使用すると、コマンドレットの完全な機能が実現されます。

  • ネイティブ コマンド は、ホスト環境に組み込まれているコマンドです。

PowerShell ランタイム環境で実行が開始されるたびに、セッション と呼ばれる処理が開始されます。 その後、そのセッションのコンテキスト内でコマンドが実行されます。

この仕様では、PowerShell 言語、組み込みのコマンドレット、およびパイプラインを介したオブジェクトの使用が定義されます。

テキストを受け入れて返す大部分のシェルとは異なり、Windows PowerShell は .NET Framework の共通言語ランタイム (CLR) と .NET Framework の上に構築されており、.NET Framework オブジェクトを受け入れて返すことができます。