about_functions_advanced
トピック
about_Functions_Advanced
簡易説明
コマンドレットと同様に動作する高度な関数について説明します。
詳細説明
高度な関数を使用すると、コマンドレットで実行できる操作に似た操作を実行するための関数を作成
できます。高度な関数は、Microsoft .NET Framework 言語でコンパイル済みのコマンドレットを作成
することなく、関数を迅速に作成する場合に便利です。これらの高度な関数は、コンパイル済み
コマンドレットの機能を制限する場合や、コンパイル済みコマンドレットに似た機能の関数を作成する
場合にも便利です。
コンパイル済みコマンドレットの作成と高度な関数の作成には違いがあります。コンパイル済みコマ
ンドレットは、C# などの .NET Framework 言語で作成する必要がある .NET Framework クラス
です。一方、高度な関数は、Windows PowerShell スクリプト言語で、他の関数またはスクリプト
ブロックの作成と同じ方法で作成されます。
高度な関数では CmdletBinding 属性を使用して、自身をコマンドレットと同様に動作する関数と
して識別します。CmdletBinding 属性は、コンパイル済みコマンドレット クラスで、クラスをコマ
ンドレットと識別するのに使用される Cmdlet 属性に似ています。この属性の詳細については、
「about_Functions_CmdletBindingAttribute」を参照してください。
次の例は、入力された名前を受け取り、次にその名前を使用してあいさつを出力する関数を示しています。
この関数では、コンパイル済みコマンドレットの動詞と名詞のペアと似た、動詞 (Send) と名詞 (Greeting)
のペアから成るを定義しています。ただし、関数では、"動詞-名詞" 形式の名前を付ける必要はありません。
function Send-Greeting
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string] $Name
)
Process
{
write-host ("Hello " + $Name + "!")
}
}
関数のパラメーターは、パラメーター属性を使用して宣言されます。この属性は単独で使用すること
も、Alias 属性と共に使用することも、その他のいくつかのパラメーター検証属性と共に使用するこ
ともできます。パラメーター (実行時に追加される動的パラメーターを含む) の宣言方法の詳細については、
「about_Functions_Advanced_Parameters」を参照してください。
前の関数の実際の動作は、Process ブロックで実行されます。この動作は、コマンドレットに渡す
データを処理するためにコンパイル済みコマンドレットによって使用される ProcessingRecord メ
ソッドに相当します。このブロックについては、Begin ブロックと End ブロックと共に、
「about_Functions_Advanced_Methods」トピックで説明します。
高度な関数は、次の点でコンパイル済みコマンドレットと異なります。
- 高度な関数のパラメーター バインドでは、文字列の配列をブール値のパラメーターにバイン
ドしても例外がスローされません。
- ValidateSet 属性および ValidatePattern 属性は、名前付きパラメーターを渡すこと
ができません。
- 高度な関数はトランザクションでは使用できません。
関連項目
about_Functions_Advanced_CmdletBindingAttribute about_Functions_Ad
vanced_Methods
about_Functions_Advanced_Parameters
Windows PowerShell Cmdlets (Windows Windows PowerShell コマンドレット)
(https://go.microsoft.com/fwlink/?LinkID=135279)