ja-JP/about_Functions_Advanced.help.txt
|
TOPIC about_Functions_Advanced 簡単な説明 コンパイル済みのコマンドレットと同じように動作する「高度な関数 (advanced functions)」の概要を説明します。 詳細な説明 高度な関数を使うと、C# などでコンパイルしたコマンドレットを書かずに、 PowerShell の関数だけでコマンドレットと同等の機能を実現できます。 高度な関数は、共通パラメーター(-Verbose, -ErrorAction など)を 自動的に利用でき、コマンドレットに近い動作をします。 関数を高度な関数にするには、次のどちらかを満たします。 - param ブロックの前に CmdletBinding 属性を付ける - いずれかのパラメーターに Parameter 属性を付ける 最もよく使われるのは CmdletBinding 属性です。 CmdletBinding 属性 [CmdletBinding()] を付けると、関数はコマンドレットとして扱われます。 これにより共通パラメーターが使えるようになり、$PSCmdlet などの機能も 利用できます。 function Verb-Noun { [CmdletBinding()] param () process { } } 基本的な構造の例 次の Send-Greeting は、必須パラメーターを持つ高度な関数の例です。 function Send-Greeting { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [string]$Name ) process { Write-Host "こんにちは、$Name さん" } } # 呼び出し例 Send-Greeting -Name "鈴木" process ブロックは、コンパイル済みコマンドレットの ProcessRecord メソッドに相当します。パイプライン入力を 1 件ずつ処理します。 パラメーター属性 パラメーターには Parameter 属性や Alias 属性などを付けられます。 function Get-Sample { [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [Alias("FullName")] [string]$Path ) process { $Path } } 各種の検証属性(ValidateSet, ValidateRange など)やパラメーターの 詳細については about_Functions_Advanced_Parameters を参照してください。 コンパイル済みコマンドレットとの相違点 高度な関数は、コンパイル済みコマンドレットとほぼ同様に動作しますが、 次の点が異なります。 1. 文字列の配列を Boolean 型パラメーターに結び付ける際の動作が、 パラメーターバインディングで異なる場合があります。 2. ValidateSet 属性や ValidatePattern 属性で、名前付き引数を 使えません。 3. 高度な関数はトランザクションに参加できません。 関連項目 about_Functions about_Functions_Advanced_Methods about_Functions_Advanced_Parameters about_Functions_CmdletBindingAttribute about_Functions_OutputTypeAttribute about_Parameters about_Comment_Based_Help ---- 原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP |