PowerShell関数

PowerShell 関数の定義

関数について

PowerShellにおける関数宣言の基本形は以下の通りです。


function 関数名(引数1, 引数2, ...引数n){
    処理内容
    return 戻り値
}

returnについて

PowerShellでは、returnを付けなくても、関数内で出力された全ての値が呼び出し元関数の戻り値(配列)になります。

値を返却したくない場合には、出力値を[void]にキャストするか、「コマンド | Out-Null」と出力を破棄する必要があります。


関数の実行について

PowerShellではカンマ演算子によって配列を表すため、C言語やC#などのように括弧を使用しての呼び出しを行いません。

引数のある関数を呼び出す場合には、UNIXシェルスクリプトのように、以下の形式で記述します。


戻り値 = 関数名 引数1 引数2 ...

PowerShell 引数の渡し方

PowerShellで関数を定義した際の、引数の渡し方(受け取り方)には3つの方法があります。

  • 引数リストを記述する。
  • param キーワードを使う。
  • 自動変数「$args」を使う。

引数リストを記述する。

関数名の後ろに、引数リストを記述することで引数を渡すことができます。


function add($x, $y){
    $x + $y
}
# 足し算を行います。
add 2 3

param キーワードを使う。

関数本体の内部で「param」キーワードを記述することで渡す引数を指定できます。


function add {
    param($x, $y)
    $x + $y
}
# 足し算を行います。
add 2 3

自動変数「$args」を使う。

関数の引数は、自動変数「$args」に配列として格納されます。

引数の要素は「$args[n]」という形式で指定要素を参照することが可能です。


function add {
    $args[0] + $args[1]
}
# 足し算を行います。
add 2 3

PowerShell 引数の指定について

引数の型指定

引数の型を明示する場合、以下の形式で記述します。

PowerShellの変数はオブジェクト型であるため、型指定できるものはできるだけ指定したほうが賢明です。

処理系による自動的な型変換によって挙動が代わる場合もあるので注意が必要です。


function add([int]$x, [int]$y){
    $x + $y
}
# 足し算を行います。
add 2 3

引数の参照渡し

引数を参照渡しするには、引数の前に [ref] をつけます。

参照先の変数にアクセスするには「Value」キーワードを指定してアクセスする必要があります。


function swap([ref]$a, [ref]$b) {
    $temp = $a.Value;
    $a.Value = $b.Value;
    $b.Value = $temp
}

引数のデフォルト値

PowerShellの引数には、デフォルト値(引数を与えずに関数を呼び出したときに設定される値)を設定できます。


function add($x = 2, $y = 3){
    $x + $y
}
# 2 + 3の足し算を行います。
add

関連ページ