PowerShell: 関数の使い方まとめ
PowerShellでの関数の定義、呼び出し、戻り値、引数の基本設定・初期値・ paramキーワード、引数の値渡し・参照渡しなど、 関数の使い方についてまとめています。
定義
PowerShellの関数の定義です。
キーワードfunctionの後に関数名、
その後に{}波括弧で囲んで処理を記述します。
書式
function 関数名 { 処理 } # 又は丸括弧()を付けて function 関数名() { 処理 }
具体的に関数を作成します。
PowerShell
function HelloWorld { Write-Host "Hello World" }
(詳細記事: 関数の定義)
呼び出し
関数の呼び出し方は関数名を記述するだけです。
function HelloWorld { Write-Host "Hello World!" } # 呼び出し HelloWorld
戻り値がある場合
戻り値のある関数を呼び出す場合は、 代入演算子= を使って右辺に関数名を記述します。
$変数名 = 関数名
引数がある場合
関数名の後にスペース区切りで引数を記述して呼び出します。 (カンマ区切りではありません)。
例えば、関数名がCalc-Sum、引数が「10」と「20」の2つある場合、 次のように呼び出します。
# 戻り値なし Calc-Sum 10 20 # 戻り値ありの場合 $re = Calc-Sum 10 20
(詳細記事:関数の呼び出し)
戻り値
関数に戻り値がある場合は関数内でキーワード「return」を使います。 戻り値はreturnの後に()丸括弧内で囲んで記述します。
return(戻り値) # 戻り値が複数ある場合(カンマ区切り) return(値1, 値2, 値3..)
returnを使った具体例です。
function Calc-Sum($p1, $p2) { $sum = $p1 + $p2 return($sum) } $n = Calc-Sum 2 3 Write-Host $n # 5
(詳細記事:関数の戻り値)
引数の設定方法(初期値、param等)
引数設定の基本的な方法
関数名の後の()丸括弧内にパラメータを記述します。 引数が複数ある場合はカンマで区切ります。
書式
function 関数名(引数1, 引数2){ 処理 }
初期値を指定する
引数に初期値を設定したい場合は「引数 = 値」と記述します。
function test($p1 = 1, $p2 = 10){ return $p1 * $p2 } test # 実行結果 10
paramキーワード
paramキーワードを使った引数設定もできます。
function 関数名(){ param(引数1, 引数2) 処理 }
function test(){ param($p1, $p2) return $p1 * $p2 } test 4 5 # 実行結果 20
(詳細記事: 関数の引数の設定方法(初期値、param、$args等))
引数を参照渡し[ref]にする方法
以上、PowerShellで関数の引数を参照渡しにする場合、 ポイントとなるのは以下の3つです。
- 関数側で仮引数の前に[ref]を付ける。
- 関数側で引数の値を取得・設定する場合は「変数.Value」とする
- 呼び出し側で実引数の前に[ref]を付け、さらに()丸括弧で囲む
まずは関数側の記述方法です。
function 関数名([ref]$引数名) { $p.Value # 取得 $p.Value = 値 # 設定 }
次は関数の呼び出し時の書き方です。
参照渡しにする変数の前に[ref]を付け、
さらに()丸括弧で括ります。
関数名 ([ref]$変数名)
# 引数が参照渡しと値渡しの場合
関数名 ([ref]$変数名1) $変数名2
引数を参照渡しにする場合のサンプルコードです。
function test_ref([ref]$p, $sec) { $p.Value = $p.value * $sec } $num = 5 Write-Host $num test_ref ([ref]$num) 10 Write-Host $num # 実行結果 5 50
(詳細記事:関数の引数を参照渡し[ref]にする)