PowerShellで関数の引数が2つ以上の時に引数がうまく渡されなくてハマったので修正方法の備忘録(ハマった)

記事内に広告が含まれています。

PowerShellで関数の引数が2つ以上になると、引数がうまく渡されない現象にしばらくハマっていました。(初心者ですね)

PowerShellは他の言語と比べると、関数への仮引数の記述が違います。

正しく動作する記述について備忘録として残します。

正しく動作しない引数2つ以上のコード(悪い例)

まずは悪い例です。

ソースコード

Javaやそれに類似する言語をかじっている人は、PowerShellでもこんな関数の呼び出しをやりがちです。

function doFunction($a,$b){
    $result = $a * $b
    Write-Host $result
}
# 引数 2つ ※誤り
doFunction (2,3)

Read-Host

実行結果

これだと思った通りに動きません。

実行結果すると、2 * 3の計算結果の”6″が表示されるかと思いきや、何も表示されません。

構文的には誤りではないので、やっかいなことにエラーも出てこないです。

正しい動作する記述例

PowerShellでは、仮引数に丸括弧を付けません。 ※丸括弧とは()

他の言語をやっていると違和感があるのですが、もともとコマンドだと考えると当たり前だとも言えます。

コマンドラインで引数を渡すときは括弧を付けませんね。

では以下に正しく動作する記述例を載せてみました。

ソースコード

正しくは以下のように値をスペースで区切って、関数に渡します。

function doFunction($a,$b){
    $result = $a * $b
    Write-Host $result
}
# 引数 2つ
doFunction 2 3

Read-Host

実行結果

想定通り、問題なく動作しました。

このように 2 * 3の計算結果の6が表示されます。

参考情報

環境

下記の環境で作成・実行しております。

No.環境バージョン
1OSWindows10
2PowerShell5.1
環境一覧

以上です。

コメント