about_Return

簡単な説明

現在の範囲 (関数、スクリプト、スクリプト ブロック) を終了します。

長い説明

キーワード return は、関数、スクリプト、またはスクリプト ブロックを終了します。 特定の時点でスコープを終了したり、値を返したり、スコープの末尾に到達したかどうかを示したりするために使用できます。

C や C のような言語に慣れているユーザーは、 キーワードを使用して、スコープを明示的に残すロジック # return を作成できます。

PowerShell では、Return キーワードを含むステートメントがなくても、各ステートメントの結果が出力として返されます。 C や C のような言語 # は、 キーワードで指定された値または値のみを返 return します。

注意

PowerShell 5.0 より、PowerShell では、正式な構文を使用してクラスを定義するための言語が追加されました。 PowerShell クラスのコンテキストでは、 ステートメントを使用して指定した以外は、メソッドから出力 return されません。 PowerShell クラスの詳細については、「」を参照about_Classes。

Syntax

キーワードの構文 return は次のとおりです。

return [<expression>]

キーワード return は単独で使用するか、次のように値または式の後に続く場合があります。

return
return $a
return (2 + $a)

次の例では、 キーワードを使用して、条件が満たされた場合に特定の時点 return で関数を終了します。 奇数は乗算されません。return ステートメントは、そのステートメントを実行する前に終了します。

function MultiplyEven
{
    param($number)

    if ($number % 2) { return "$number is not even" }
    $number * 2
}

1..10 | ForEach-Object {MultiplyEven -Number $_}
1 is not even
4
3 is not even
8
5 is not even
12
7 is not even
16
9 is not even
20

PowerShell では、 キーワードが使用されていない場合でも、値 return を返す可能性があります。 各ステートメントの結果が返されます。 たとえば、次のステートメントは 変数の値を返 $a します。

$a
return

次のステートメントは、 の値も返します $a

return $a

次の例には、関数が計算を実行することをユーザーに知らせるステートメントが含まれています。

function calculation {
    param ($value)

    "Please wait. Working on calculation..."
    $value += 73
    return $value
}

$a = calculation 14

"Please wait. 計算に取り組んでいます..."文字列は表示されません。 代わりに、次の例のように、変数に割り当てられ $a ます。

PS> $a
Please wait. Working on calculation...
87

情報文字列と計算結果の両方が関数によって返され、変数に代入され $a ます。

PowerShell 5.0 以降で、関数内にメッセージを表示する場合は、ストリームを使用でき Information ます。 次のコードでは、コマンドレットと Continue を使用して、上記の例を修正して Write-Information InformationAction います。

function calculation {
    param ($value)

    Write-Information "Please wait. Working on calculation..." -InformationAction Continue
    $value += 73
    return $value
}

$a = calculation 14
Please wait. Working on calculation...
C:\PS> $a
87

戻り値とパイプライン

スクリプトブロックまたは関数からコレクションを返すと、PowerShell によって自動的にメンバーのロールが解除され、パイプラインを介して一度に1つずつ渡されます。 これは、PowerShell の1回限りの処理が原因です。 詳細については、「 about_pipelines」を参照してください。

この概念は、数値の配列を返す次のサンプル関数によって示されています。 関数からの出力は、 Measure-Object パイプライン内のオブジェクトの数をカウントするコマンドレットにパイプ処理されます。

function Test-Return
{
    $array = 1,2,3
    return $array
}
Test-Return | Measure-Object
Count    : 3
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

スクリプトブロックまたは関数が、コレクションを1つのオブジェクトとしてパイプラインに返すように強制するには、次の2つの方法のいずれかを使用します。

  • 単項配列式

    単項式を使用すると、次の例に示すように、戻り値を1つのオブジェクトとして渡すことができます。

    function Test-Return
    {
        $array = 1,2,3
        return (, $array)
    }
    Test-Return | Measure-Object
    
    Count    : 1
    Average  :
    Sum      :
    Maximum  :
    Minimum  :
    Property :
    
  • Write-OutputNoenumerate パラメーターを使用します。

    Write-Output Noenumerate パラメーターを指定してコマンドレットを使用することもできます。 次の例では、コマンドレットを使用し Measure-Object て、サンプル関数からパイプラインに送信されたオブジェクトをキーワードでカウントし return ます。

    function Test-Return
    {
        $array = 1, 2, 3
        return Write-Output -NoEnumerate $array
    }
    
    Test-Return | Measure-Object
    
    Count    : 1
    Average  :
    Sum      :
    Maximum  :
    Minimum  :
    Property :
    

こちらもご覧ください

about_Language_Keywords

about_Functions

about_Scopes

about_Classes

Write-Information

about_Script_Blocks