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]にする

PowerShell