about_Functions_Advanced
簡単な説明
スクリプトを使用してコマンドレットを作成する方法である高度な関数を紹介します。
長い説明
コマンドレットは、PowerShell のパイプライン セマンティクスに参加する 1 つのコマンドです。 これには、バイナリ コマンドレット、高度なスクリプト関数、CDXML、ワークフローが含まれます。
高度な関数を使用すると、PowerShell 関数として記述されたコマンドレットを作成できます。 高度な関数を使用すると、バイナリ コマンドレットを記述してコンパイルすることなく、コマンドレットを簡単に作成できます。 バイナリ コマンドレットは、C# などの .NET 言語で記述された .NET クラスです。
高度な関数では、 属性 CmdletBinding を使用して、コマンドレットのように機能する関数として識別します。 属性 CmdletBinding は、クラスをコマンドレットとして識別するためにコンパイル済みのコマンドレット クラスで使用される Cmdlet 属性に似ています。 この属性の詳細については、この属性に関するページ about_Functions_CmdletBindingAttribute。
次の例は、名前を受け取り、指定された名前を使用してあいさつを出力する関数を示しています。 また、この関数は、コンパイルされたコマンドレットの動詞と名詞のペアのような動詞 (Send) と名詞 (Greeting) のペアを含む名前を定義します。 ただし、関数は動詞名詞名を持つ必要はありません。
function Send-Greeting
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string] $Name
)
Process
{
Write-Host ("Hello " + $Name + "!")
}
}
関数のパラメーターは、Parameter 属性を使用して宣言されます。 この属性は単独で使用するか、Alias 属性または他のいくつかのパラメーター検証属性と組み合わせることができます。 パラメーター (実行時に追加される動的パラメーターを含む) を宣言する方法の詳細については、「about_Functions_Advanced_Parameters。
前の関数の実際の処理は Process ブロックで実行されます。これは、コマンドレットに渡されるデータを処理するためにコンパイルされたコマンドレットによって使用される ProcessingRecord メソッドと同じです。 このブロックは、Begin ブロックと End ブロックと共に、次のトピック about_Functions_Advanced_Methods されています。
高度な関数は、コンパイル済みのコマンドレットとは次の点で異なります。
- 高度な関数パラメーター バインドでは、文字列の配列がブール型パラメーターにバインドされている場合、例外はスローしません。
- ValidateSet 属性と ValidatePattern 属性は、名前付きパラメーターを渡す必要があります。
- 高度な関数はトランザクションでは使用できません。
関連項目
フィードバック
フィードバックの送信と表示